Введение в Unix

         

Метасимволы в 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.




Содержание раздела