Zsh поддерживает такое же перенаправление вывода как и
Bash, но кроме этого он поддерживает множество
расширений. Некоторые расширения работают только если заданы
соответствующие настройки. Например, если не задана опция
CLOBBER
, то использование команды
>
для существующего файла
приведет к возникновению ошибки и невыполнению команды. На этот
случай, для практически всех команд существуют их модификации,
которые не зависят от настроек. Например, для команды
>
существуют ее модификации
>!
и
>|
.
Для одновременного перенаправления стандартного вывода и
стандартного потока сообщений об ошибках определены дополнительные
команды >&
,
&>
,
>>&
,
&>>
и их модификации со
знаками |
и
!
(например,
&>|
). Эти команды
соответственно переписывают и дополняют информацию в указанных
файлах, а также позволяют избавиться от неуклюжих конструкций вида
1>FNAME 2>&1
.
Zsh также позволяет перенаправлять информацию в более чем
в один файл, аналогично использованию команды
tee (это доступно только если определена
переменная MULTIOS
, что обычно указано по
умолчанию). Кроме этого можно одновременно использовать
перенаправление и конвейеры. Например, команда
date >foo |
cat
запишет дату в файл foo
и выведет ее в стандартный поток вывода.
Если установлена переменная MULTIOS
, то
имя файла, указанное в качестве того, куда надо будет
перенаправлять информацию, подвергается раскрытию шаблонов
(globbing). Таким образом можно использовать команду
: > *
для усечения всех файлов в текущем каталоге.
Множественное перенаправление также работает и при вводе информации, позволяя заменять конструкции вида
cat foo fubar | sort
на конструкции
sort <foo <fubar
или даже
sort <f{oo,ubar}
Zsh даже позволяет использовать перенаправление без
указания команды. Если не установлена переменная
NULLCMD
, то при таком использовании будет
возникать ошибка. Но если установлена переменная
NULLCMD
, или READNULLCMD
(она имеет преимущество над NULLCMD
), то эти
команды будут использоваться для обработки данных. По умолчанию
NULLCMD
имеет значением команду
cat, а READNULLCMD
значением
команду more. Таким образом команда
< file
приведет к показу указанного файла.