Просто дополнение к ответу Rahul Patil. Используя его ответ, я добился нужного результата следующим образом:
* * * * * /path/of/myscript.sh
* * * * * sleep 20s && /path/of/myscript.sh
* * * * * sleep 40s && /path/of/myscript.sh
Это позволило мне выполнять скрипт 3 раза в минуту.
Я бы подошёл к этому со вспомогательной функцией и grep
, так как (GNU )grep имеет естественный набор опций для "строк до и после совпадения". Версия с голыми -костями:
histgrep() {
history | grep -B $2 -A $3 "$1"
}
... и вы должны использовать его точно так же, как вашу историю -поиск -контекстную команду выше:
$ histgrep jeff 1 1
517 vi go.sh
518 x=jeff
519 y=/tmp
--
832 sudo visudo
833 sudo adduser jeff2
834 man sudoers
--
841 sudo ls -al /var/lib/sudo/lectured
842 sudo rm /var/lib/sudo/lectured/jeff /var/lib/sudo/lectured/schaller
843 sudo ls
--
940 ls *[[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]]*
941 touch jeff߄߅߆߇߈߉.txt
942 ls
--
1235 histgrep a b c
1236 histgrep jeff a 1
1237 histgrep jeff 1 a
1238 histgrep jeff 1 1
После добавления некоторой основной ошибки -проверка функции будет:
histgrep() {
if [ "$#" -ne 3 ]
then
echo "Usage: histgrep searchterm n-before m-after"
return
fi
case "$2$3" in
(*[^0-9]*)
echo "Usage: histgrep searchterm n-before m-after"
return
;;
esac
history | grep -B $2 -A $3 "$1"
}
Вы могли бы легко назвать его history-search-context
вместо histgrep
, если хотите:
history-search-context() {
#...
}