В этом разделе описаны команды и
символы, имеющие специальное
значение, которые позволяют:
- находить с помощью шаблона и
манипулировать группами
файлов;
- запускать команду в фоновом
режиме или в определенное
время;
- выполнять последовательно
группу команд;
- перенаправлять стандартный
ввод и вывод;
- завершать работающие
программы.
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] - то малые буквы.
|