Основы программирования в Linux | страница 35
>*
как знака подстановки, соответствующего строке символов. Но вы можете не знать о существовании односимвольного знака подстановки, >?
, а конструкция >[set]
позволяет проверить любое количество одиночных символов, >[^set]
— применяет логическую операцию "НЕ" к множеству, т.е. включает все, кроме того, что вы задали. Подстановочный шаблон из фигурных скобок >{}
(доступен в некоторых командных оболочках, включая bash) позволяет формировать множество из произвольных строк, которое командная оболочка раскроет. Например, команда>$ ls my_{finger, toe}s
будет выводить файлы my_fingers и my_toes. Эта команда использует оболочку для проверки всех файлов в текущем каталоге. Мы вернемся к этим правилам соответствия шаблонам в конце главы, когда будем более подробно рассматривать утилиту >grep
и возможности регулярных выражений.
Опытные пользователи ОС Linux, вероятно, выполнят эту операцию более эффективным способом, возможно, с помощью следующей команды:
>$ more `grep -l POSIX *`
или синонимической конструкции
>$ more $(grep -l POSIX *)
В дополнение команда
>$ grep -l POSIX * | more
выведет на экран имя файла, содержащего строку >POSIX
. В этом сценарии мы видим, что командная оболочка для выполнения трудной работы привлекает другие команды, например, >grep
и >more
. Оболочка просто позволяет собрать вместе несколько имеющихся команд новыми оригинальными способами. В следующих сценариях вы увидите использование знаков подстановки неоднократно. Мы подробно рассмотрим целую область подстановок, когда будем знакомиться с регулярными выражениями в разделе, посвященном команде >grep
.
Заниматься этой канителью каждый раз, когда хочешь выполнить последовательность команд, утомительно. Нужно сохранить команды в файле, который принято называть сценарием или скриптом командной оболочки, а затем вы можете выполнять эти файлы, когда захотите.
Создание сценария
С помощью любого текстового редактора необходимо создать файл, содержащий команды. Создайте файл с именем first с таким содержимым:
>#!/bin/sh
># first
># Этот файл просматривает все файлы в текущем каталоге
># для поиска строки POSIX, а затем выводит имена
># найденных файлов в стандартный вывод.
>for file in *
>do
> if grep -q POSIX $file
> then
> echo $file
> fi
>done
>exit 0
Комментарий начинается со знака >#
и продолжается до конца строки. Принято знак >#
ставить в первой символьной позиции строки. Сделав такое общее заявление, далее отметим, что первая строка