Метасимволы в C-Shell
Метасимволами называются символы, имеющие специальное значение для интерпретатора.
В C-Shell имеются следующие метасимволы:
- синтаксические;
- именования файлов;
- кавычки;
- ввода - вывода;
- подстановки;
- прочие.
Многие из них сходны по функциям с аналогичными функциями метасимволов обычного Shell.
Синтаксические метасимволы:
; - разделяет команды, которые будут выполнены последовательно;
- - разделяет команды, соединенные каналом, так что стандартный вывод левой является стандартным вводом правой;
-& - аналогично -, однако диагностический вывод тоже направляется на ввод следующей команды;
( ) - объединяют команды, разделенные предыдущими знаками, в единое целое для использования в последовательности или с каналом;
& - предписывает выполнение команды на заднем плане параллельно со следующей командой, например:
cat letter>/dev/lp &
-- - аналогичен знаку -, однако правая команда выполняется, только если левая завершилась аварийно;
&& - аналогичен знаку -, однако правая выполняется, только если левая завершилась нормально.
Метасимволы именования файлов:
? - любой символ в имени файла. Например, файлы fa.o, fb.o, fc.o могут быть напечатаны одной командой:
$ cat f?.o > total.o
* - любая строка в имени файла. Например, удаление всех файлов, имена которых начинаются с old:
% rm old*
[] - любая одна буква из указанного в квадратных скобках диапазона. Например:
% ls f.[a - z] - печать всех файлов типа f.x, где x - буква из диапазона a - z;
{} - аналогичны квадратным скобкам >[], однако вместо диапазона указано множество букв. Например, печать файлов list, last, lost:
% ls l{iao}st;
~ - полное имя рабочего каталога пользователя (см.выше);
/ - разделяет имена каталогов и файла в полном имени файла или каталога.
Метасимволы - кавычки:
\ - отменяет мета-значение следующего за ним одного метасимвола. Например:
% ls \* * not found (в то время как % ls * - печать всех файлов текущего каталога);
' ' - отменяет мета-значения группы символов. Пример:
% set string = 'ws - l $dir / $file'
" " - аналогичны одиночным кавычкам, однако подстановка значений переменных и команд выполняется. Пример:
% echo "$dir is not a directory."
Метасимволы ввода - вывода:
< - перенаправление ввода;
> - перенаправление вывода (если переменная noclobber установлена, перезапись существующего файла вывода не происходит);
>& - перенаправление диагностического вывода;
>! - перенаправление вывода (с обязательной перезаписью существующего файла вывода);
>&! - аналогично >! для диагностического вывода;
>> - аналогично >, однако вывод добавляется в конец существующего файла вывода; если файл не существует и переменная noclobber установлена, возникает ошибка;
>>& - аналогично >&, однако вывод добавляется в конец файла вывода;
>>! - аналогично >>, однако, если файл вывода не существует, он создается (ошибки не возникает);
>>&! - комбинация >>& и >>!.
Метасимволы подстановки:
$ - указывает подстановку значения переменной, например:
% set M1 = /usr/man/man3 % cd $M1
! - указывает подстановку команды из буфера истории;
: - указывает подстановку строк в команде из буфера истории;
? - используется в специальных случаях подстановок команд из буфера истории.
Прочие метасимволы:
# (диез) - указывает комментарий C-Shell; начинает имена временных файлов; должен быть первым символом командного файла в C-Shell;
% - указывает номер процесса, например:
kill %1.