"Рас Сэйдж. Приемы профессиональной работы в 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: |
|
|