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


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


Если использована опция, которая не является ни l, ни s, то этой опции соответствует звездочка (*) и в стандартный файл ошибок выводится сообщение об ошибке. Затем командный файл завершается. Мы бы могли просто проверить первый параметр командной строки, чтобы выяснить, является ли он опцией, и если является, то установить эту опцию. Поскольку можно использовать только одну опцию за один раз, мы могли бы предполагать, что в остальной части командной строки были имена файлов. Тем не менее, этот цикл допускает простое добавление других опций, которые могли бы действовать в дополнение к одной основной. Это более предпочтительно, и оно не влияет на производительность.

В строке 21 мы добавляем символ двоеточия (:) к другим символам разделителя полей. Мы должны именно добавить двоеточие, а не превратить разделитель полей только в двоеточие. Если бы мы сделали последнее, то это запутало бы разбор имен файлов в командной строке. Основной цикл представлен в строках 23-40. Это двойной цикл for. Внешний цикл проходит по каждому файлу в командной строке, а внутренний цикл обрабатывает каждый каталог, указанный в вашей переменной PATH. Обратите внимание, что внешний цикл идет по именам файлов, а не по записям каталогов. Если бы мы выбрали второе, то в распечатке нарушился бы порядок имен файлов, поскольку поиск шел бы сначала по каталогам.

Следовательно, для каждого имени файла и каталога действие зависит от требуемого формата. Маршрутный формат печатает полное имя, листинговый формат выполняет команду ls, а формат set не ищет указанные имена файлов, но проверяет права доступа и ищет файлы с установленным пользовательским идентификатором.

Опция ls есть дополнение, которое сокращает объем работы при вызове. Наличие комбинации поиска и команды ls освобождает того, кто вызывает этот командный файл от необходимости применять команду подстановки. Старая и новая команды выглядят примерно так:

ll `path ll`

Находит путь к ll, а затем запускает на нем команду ls -l.

paths -l ll




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



Книжный магазин