Шрифт:
3.2 Метасимволы
Интерпретатор распознает еще ряд символов как специальные. Наиболее часто используется звездочка
есть не что иное, как некое подобие команды
Символы со специальным значением, подобные
| > | 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: Метасимволы
При таком количестве метасимволов интерпретатора необходимо иметь возможность экранировать специальный символ от интерпретации. Самый простой и надежный способ экранирования — заключить его в апострофы:
Можно также использовать кавычки
Еще одну возможность дает ввод обратной дробной черты перед каждым символом, который вы хотите закрыть от интерпретатора, например:
Хотя строка
Кавычки одного вида могут экранировать кавычки другого вида:
и могут не заключать в себе весь аргумент:
В последнем примере команда
Символ
Во всех приведенных выше примерах экранирование специальных символов предохраняет их от интерпретации. Команда
выдает все имена файлов, начинающиеся с
Что произойдет, если ни один файл не будет соответствовать шаблону? Интерпретатор просто пропустит строку, как если бы она была взята в кавычки, а не выразит вам свое неудовольствие (как было принято в ранних версиях). Конечно, не следует рассчитывать на это свойство, но его можно использовать, чтобы узнать о существовании файлов, соответствующих шаблону: