Приемы профессиональной работы в UNIX


ОПИСАНИЕ - часть 2


Итак, зачастую имеется много альтернатив. Мастера UNIX, сталкиваясь с какой-либо проблемой, не борются с ней с помощью Си или командного файла интерпретатора shell. Поскольку они знакомы с существующими ресурсами системы UNIX, они могут рассмотреть проблему и выбрать стратегию, использующую наименее сложное средство, выполняющее данную работу с приемлемым уровнем производительности. В порядке возрастания сложности, это могут быть непонятная, но существующая команда и/или опция, псевдоним, командный файл интерпретатора shell или программа на языке Си.

Что делает lc?

Общий подход к разработке этой команды заключается в том, чтобы собрать вместе некоторые опции и сделать новую команду с более мощным интерфейсом. Чтобы достичь этой мощи, мы можем сделать пре- или постпроцессор для обычной команды системы UNIX.

Главная задача здесь - печать колонок, поэтому мы смотрим на опции команды ls, чтобы задействовать их. Конечно, мы включаем опцию -C. Какие еще опции ls нам нужны? Обычно UNIX не печатает файлы, имена которых начинаются с точек, например, .profile, если только вы не указываете ls -a. Это забывается при просмотре этих важных файлов, поэтому мы конструируем нашу команду так, чтобы она печатала их по умолчанию. Никакие файлы не скрываются от нас. Для пользователей System V и BSD (или для любого, кто имеет опцию -F), листинг улучшается за счет вывода "/" после имени каталога и "*" после исполняемого файла. Ранняя команда ls системы UNIX не имела возможности печатать в таком стиле. Отметим, что данное использование термина "исполняемый" означает показ того, что флаги прав доступа имеют бит "x", а не то, что это файл типа a.out с магическим числом. Это отличие важно тем, что делает наш командный файл более полезным.

Если ожидается длинная распечатка, как это бывает обычно для рекурсивных каталогов, то вы хотите иметь доступ к команде more. Мы встраиваем команду more так, чтобы ее можно было активировать с помощью опции -m. Опция -m должна быть первой опцией после имени команды, из-за способа, которым она проверяется внутри программы. Если она передается после первой опции, она переходит к команде UNIX ls и интерпретируется как печать в потоковом формате. Это такой формат, в котором все имена расположены в строках, разделенных запятыми (,). Как мы уже отмечали, вы можете сделать интерфейс этого командного файла более гибким за счет дополнительной работы над ним.




- Начало -  - Назад -  - Вперед -