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

из программного канала.)
Для каждого файла, с которым работает thead, выполняется контроль
- текстовый ли это файл. Применение команды head к исполняемым модулям
приводит к выводу "таинственных" символов на экран и иногда может выз-
вать дамп оперативной памяти.

ПРИМЕРЫ

1. $ thead /etc

Печатает данные из каждого текстового файла, находящегося в ката-
логе /etc. Очень полезная команда, так как большинство файлов в /etc
являются исполняемыми модулями. Удобно иметь возможность быстро изоли-
ровать текстовые файлы.

2. $ thead /usr/include

Просматривает все подключаемые файлы (*.h), даже в системном под-
каталоге sys.

3. $ find $HOME -ctime 0 -print | thead

Ищет все файлы в вашем регистрационном каталоге, которые были из-
менены в течении последних 24 часов. Для каждого файла проверяется,
текстовый ли он. Если файл текстовый, то он печатается.

ПОЯСНЕНИЯ

Строки 4-8 выполняют проверку ошибок. Так как команда thead не
имеет никаких опций, любые позиционные параметры, которые начинаются с
дефиса (-) являются неверными. Если первым символом первого позицион-
ного параметра оказывается "-", то печатается сообщение "argument
error" (ошибка аргумента) вместе с сообщением о способе запуска и ко-
манда thead прекращает работу.
Некоторые приемы программирования для интерпретатора shell,
используемые в этих строках, довольно часто встречаются в данной кни-
ге, поэтому имеет смысл остановиться на них подробнее.
Проанализируем строку 4, работающую изнутри наружу. Команда echo
выдает содержимое $1 (текущий параметр командной строки), которое пе-
редается по программному каналу команде cut. Команда cut используется
для того, чтобы выделить определенные символы или группы символов из
строки. В данном случае опция -c1 используется для получения только
первого символа.

КОМАНДА cut ДЛЯ BSD

В системе BSD нет команды cut, но следующий командный файл все же
"вырезает" первое непустое поле в текущем аргументе.
Предположим, мы используем команду для генерации целого набора
строк. В данном случае это команда who: