UNIX — универсальная среда программирования
Шрифт:
Символы со специальным значением, подобные
> | prog > file — переключить стандартный выходной поток в файл |
>> | prog >> file — добавить стандартный выходной поток к файлу |
< | prog < file —
|
| | p1 | p2 — передать стандартный выходной поток p1 как стандартный выходной поток для p2 |
<<str | "Документ здесь": стандартный выходной поток задается в последующих строках до строки, состоящей из одного символа str |
* | Задает любую строку, состоящую из нуля или более символов, в имени файла |
? | Задает любой символ в имени файла |
[ccc] | Задает любой символ из [ccc] в имени файла (допустимы диапазоны, такие, как 0-9 или a-z ) |
; | Завершает команды: p1; p2 — выполнить p1 , затем p2 |
& | Выполняет аналогичные функции, но не ждет окончания p1 |
`...` | Инициирует выполнение команд(ы) в ... ; `...` заменяется своим стандартным выводом |
(...) | Инициирует выполнение команд(ы) в ... в порожденном shell |
{...} | Инициирует выполнение команд(ы) в ... в текущем вызове shell (используется редко) |
$1, $2, ... | Заменяются аргументами командного файла |
$var | Значение переменной var в программе на языке shell |
${var} | Значение var ; исключает коллизии в случае конкатенации переменной с последующим текстом (см. также табл. 5.3) |
\ | \c — использовать непосредственно символ c , \ перевод строки отбрасывается |
'...' | Означает непосредственное использование |
"..." | Означает непосредственное использование, но после того, как $ , `...` и \ будут интерпретированы |
# | В начале слова означает, что вся остальная строка рассматривается как комментарий (но не в седьмой версии) |
var=value | Присваивает value переменной var |
p1 && p2 | Предписывает выполнить p1 ; в случае успеха выполнить p2 |
p1 || p2 | Предписывает выполнить p1 ; в случае неудачи выполнить p2 |
Таблица 3.1: Метасимволы
При таком количестве метасимволов интерпретатора необходимо иметь возможность экранировать специальный символ от интерпретации. Самый простой и надежный способ экранирования — заключить его в апострофы:
Можно также использовать кавычки
Еще одну возможность дает ввод обратной дробной черты перед каждым символом, который вы хотите закрыть от интерпретатора, например:
Хотя строка
Кавычки одного вида могут экранировать кавычки другого вида:
и могут не заключать в себе весь аргумент:
В последнем примере команда
Символ
Во всех приведенных выше примерах экранирование специальных символов предохраняет их от интерпретации. Команда
выдает все имена файлов, начинающиеся с
Что произойдет, если ни один файл не будет соответствовать шаблону? Интерпретатор просто пропустит строку, как если бы она была взята в кавычки, а не выразит вам свое неудовольствие (как было принято в ранних версиях). Конечно, не следует рассчитывать на это свойство, но его можно использовать, чтобы узнать о существовании файлов, соответствующих шаблону:
Появление обратной дробной черты в конце строки требует продолжения строки, что является способом задать интерпретатору очень длинную строку:
Обратите внимание на то, что символ перевода строки отбрасывается, если перед ним стоит обратная дробная черта, но он остается, если взят в кавычки. Метасимвол
Символ
Объясните результат выполнения команды
Команда
Однако при таком решении в самой распространенной ситуации, когда перевод строки нужен, он не подразумевается по умолчанию и требует дополнительного ввода:
Поскольку команда должна по умолчанию выполнять наиболее часто встречающееся действие, настоящее эхо автоматически добавляет перевод строки.