Библиотека сайта rus-linux.net
8. Shell - интерпретатор командного языка
В этом разделе описаны команды и символы, имеющие специальное значение, которые позволяют:
- находить с помощью шаблона и манипулировать группами файлов;
- запускать команду в фоновом режиме или в определенное время;
- выполнять последовательно группу команд;
- перенаправлять стандартный ввод и вывод;
- завершать работающие программы.
8.1. Метасимволы
В табл. 20 приведены метасимволы, используемые shell.
Таблица 20
Метасимволы
Символ | Функция |
---|---|
* ? [ ] | Эти метасимволы позволяют указывать сокращенные имена файлов при поиске по шаблону |
& | Означает, что команда будет выполняться в фоновом режиме |
; | Точка с запятой разделяет команды в командной строке |
\ | Отменяет специальное значение символов, таких как *, ?, [, ], &, ;, <, >, | |
'...' | Одиночные кавычки отменяют значение пробела как разделителя и специальное значение всех символов |
"..." | Двойные кавычки отменяют значение пробела как разделителя и специальное значение всех символов, за исключением $ и \ |
> | Перенаправляет вывод команды в файл |
< | Перенаправляет ввод для команды из файла |
>> | Перенаправляет вывод команды, который должен быть добавлен в конец существующего файла |
| | Создает канал, направляющий вывод одной команды во ввод другой команды |
`...` | Используется в паре; позволяет использовать вывод команды как аргументы в командной строке |
$ | Используется с позиционными параметрами и определенными пользователем пременными; также используется по умолчанию в качестве подсказки shell |
Метасимволы используются для поиска имен файлов, посредством их упрощается задача указания файлов или групп файлов как аргументов команды.
8.1.1. Поиск всех символов (метасимвол *)
Метасимвол * осуществляет поиск любой строки символов, включая нулевую (пустую) строку. Вы можете использовать * для обозначения полного или частичного имени файла. Просто символ * ищет все имена файлов и справочников в текущем справочнике, за исключением тех, которые начинаются с точки. Чтобы посмотреть метасимвол * в действии, введите его как аргумент в команде echo:
echo *<CR>В ответ система распечатает перечень всех имен файлов в вашем текущем справочнике.
Символ * может представлять символы в любой части имени файла. Например, если вы знаете, что несколько файлов имеют одинаковые первые и последние буквы, то вы можете выдать запрос, основываясь на этом факте. Если в вашем справочнике находятся файлы FATE, FE, FADED_LINE, FIG3.4E, FINE_LINE, FAST_LINE, то для отображения всех этих файлов на экране введите команду:
ls F*E<CR>
Вы можете, например, с помощью метасимвола * найти все файлы с именами memo в системном справочнике: ls */memo
8.1.2. Поиск по одному символу (метасимвол ?)
Метасимвол ? осуществляет поиск любого одного символа в имени файла за исключением лидирующей точки. Предположим, вы имеете книгу, в которой 12 глав и хотите получить список глав до 9-ой главы. Если ваш справочник содержит следующие файлы:
Chapter1 Chapter2 Chapter5 Chapter9 Chapter11то введите команду ls с метасимволом ? для получения всех глав, которые начинаются со строки "Chapter" и заканчиваются одним символом:
$ ls Chapter?<CR> Chapter1 Chapter2 Chapter5 Chapter9 $
Хотя метасимвол осуществляет поиск одного символа, вы можете использовать его для поиска более одного символа в имени файла. Например, вы получите перечень всех остальных глав в текущем справочнике, если введете следующую команду:
ls Chapter??<CR>
И, конечно, чтобы получить список всех глав в текущем справочнике, используйте метасимвол *:
ls Chapter*<CR>
8.1.3. Поиск одного набора (метасимвол [])
Если вы хотите, чтобы shell нашел любой символ из перечисленных вами символов, то заключите эти символы в квадратные скобки. Предположим, ваш справочник содержит следующие файлы: cat, fat, mat, rat. Если вы воспользуетесь в качестве части имени файла шаблоном [crf], то shell будет искать имена файлов, в которые входят либо буква "c", либо буква "r", либо буква "f" в указанной позиции. Пример:
$ ls [crf]at<CR> cat fat rat $
Символы, которые могут быть сгруппированы в скобки, называются классом символов.
Скобки могут также использоваться для обозначения диапазона символов, цифр или букв. Предположим в вашем справочнике содержатся следующие файлы: chapter1, chapter2, chapter3, chapter4, chapter5, chapter6. Если вы укажете:
chapter[1-5]то shell найдет файлы c chapter1 по chapter5.
Класс символов можно также указать с помощью диапазона букв. Если вы укажете [A-Z], то shell будет искать только большие буквы, если [a-z] - то малые буквы.