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


ПОЯСНЕНИЯ


Строка 4 очищает экран, используя команду c, представленную ниже в этой книге. (Вместо этого вы снова можете использовать команду clear, если она доступна.)

Строка 5 устанавливает в позиционные параметры выход команды date. Это то же самое, что мы делали в программе cpiobr. Строки 6-17 выводят меню. Здесь использован один оператор echo, как описано в cpiobr. Строка 13 читает команду пользователя.

Строки 20-27 выполняют основную работу программы. Если введенная команда была просто возвратом каретки (трактуется как нуль), программа завершается. В строке 23 команда sed просматривает файл $HOME/bin/log. Это требует, чтобы вы поместили log в подкаталоге двоичных модулей вашего регистрационного каталога. Если вы разместите ее где-либо в другом месте, вы должны изменить эту строку. Команда sed использует ключ -n, который запрещает вывод, за исключением того, что явно указано для печати. Строка -e находит имена файлов.

Данный подход использует функцию замены в команде sed. Таким образом мы можем заменить все за исключением имени файла, а затем напечатать его. Смысл этой записи примерно такой: сперва мы ищем выражение more (/more/), находя тем самым все строки в файле протокола, содержащие слово "more". По определению, каждый файл протокола выводится на экран, используя команду more. Поскольку вы добавляете файлы протокола, каждая новая строка должна содержать слово more, поэтому файлы находятся автоматически по выражению команды sed.

Затем мы указываем команде sed сделать замену. Первое выражение содержит в себе всю строку от начала до конца, но мы применяем круглые скобки для отметки внутри нее образца .*, тем самым выделяя часть строки между пробелом после "more" и первой точкой с запятой в конце строки. Если вы посмотрите на все строки в файле log, которые начинаются с "more", то вы увидите, что это соответствует имени файла, которое мы ищем.

Затем мы указываем команде sed заменить всю строку на первый образец "pattern 1". "Pattern 1" - это запись команды sed для первого отмеченного или "отмеченного биркой" выражения. Другими словами, мы заменили имя файла на всю строку целиком и указали команде sed напечатать результат, тем самым выдавая на экран имя файла.

Эта работа выполняется для такого количества операторов more, сколько вы имеете. Чем больше файлов log вы имеете, тем больше файлов обрабатывает команда sed. Обратите внимание, что оператор sed просматривает любое количество символов от начала строки для нахождения слова "more". Не указывая в программе конкретное число символов, на которое нужно отступить, вы получаете тем самым свободу выбора ваших собственных уровней отступа.

Если введенная команда не является допустимой, выдается сообщение об ошибке.

Эта программа не имеет цикла, поэтому срабатывает один раз. Если вы хотите запустить ее снова, вы должны снова ввести log.




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