"Рас Сэйдж. Приемы профессиональной работы в UNIX" - читать интересную книгу автора

16 exit 1;;
17 esac

19 done

21 case $# in
22 0) echo "$O: argument error" >&2
23 echo "usage: $O [-c|-h] string [dir ...]" >&2
24 exit 2
25 ;;
26 1) while read FILE
27 do
28 grep -y "$1" $FILE /dev/nul
29 done
30 ;;
31 *) STRING=$1; shift
32 eval find "$@" -type f $OPT -print | sort | while read FILE
33 do
34 grep -y "$STRING" $FILE /dev/null
35 done
36 ;;
37 esac

ПЕРЕМЕННЫЕ СРЕДЫ ВЫПОЛНЕНИЯ

FILE Содержит имя каждого файла
OPT Содержит специальные опции команды find
STRING Временная переменная, в которой содержится строка
поиска

ОПИСАНИЕ

ЗАЧЕМ НАМ НУЖЕН КОМАНДНЫЙ ФАЙЛ tgrep?

Как мы могли видеть на примере двух предыдущих утилит, рекурсив-
ный просмотр файлов очень полезен. Он сохраняет время, поскольку поз-
воляет избежать поиска файлов вручную, а также создает средства, кото-
рые могут быть использованы в более мощных утилитах. Чем больше име-
ется созданных нами средств, тем больше новых средств мы можем постро-
ить с их помощью. Единственная проблема заключается в том, что вы
должны позаботиться об их взаимозависимости (каким утилитам или
средствам требуются другие утилиты или средства и кто на кого влияет).
Еще одна область, где UNIX не имеет "родной" рекурсивной команды
- это обработка строк. Семейство команд типа grep очень велико, но все
они работают только по одному фиксированному маршрутному имени файла.
Нам необходим препроцессор для команды grep. Правда, мы можем дать
запрос на все файлы во всей системе или какой-либо ее части по нашему
выбору. Если мы попытаемся сделать это вручную, то это означает, что
мы должны много раз нажимать на клавиши, что может привести к син-
таксической ошибке. Вы также должны точно помнить, как вы создавали