> | prog > file — переключить стандартный выходной поток в файл |
>> | prog >> file — добавить стандартный выходной поток к файлу |
< | prog < file — извлечь стандартней выходной поток из файла |
| | p1 | p2 — передать стандартный выходной поток p1 как стандартный выходной поток для p2 |
< | "Документ здесь": стандартный выходной поток задается в последующих строках до строки, состоящей из одного символа 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: Метасимволы shell
При таком количестве метасимволов интерпретатора необходимо иметь возможность экранировать специальный символ от интерпретации. Самый простой и надежный способ экранирования — заключить его в апострофы:
$ echo '* * *'
* * *
$
Можно также использовать кавычки "..."
, но интерпретатор на самом деле "заглядывает" внутрь этих кавычек в поиске метасимволов $
, '...'
и \
, так что не применяйте "..."
, если только вам не требуется определенным образом обработать строку в кавычках.
Еще одну возможность дает ввод обратной дробной черты перед каждым символом, который вы хотите закрыть от интерпретатора, например:
$ echo \*\*\*
Хотя строка \*\*\*
не похожа на английское слово, в терминологии языка shell
это слово, ибо им является любая последовательность символов, воспринимаемая интерпретатором как целое, включая даже пробелы, если они взяты в кавычки.
Кавычки одного вида могут экранировать кавычки другого вида:
$ echo "Don't do that!"
Don't do that!
$
и могут не заключать в себе весь аргумент:
$ echo x'*'y
x*y
$ echo '*'A'?'
*А?
$
В последнем примере команда echo
получает один аргумент, не содержащий апострофов, так как, сделав свое дело, апострофы исчезают. Строки в кавычках могут содержать символы строк:
$ echo 'hello
> world'
hello
world
$
Символ >
является вторичным приглашением интерпретатора, которое выдается, если ожидается продолжение ввода для завершения команды. В этом примере апостроф в первой строке должен быть уравновешен другим апострофом. Вторичное приглашение интерпретатора хранится в переменной PS2
; его можно изменить по своему вкусу.
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии