Перенаправление вывода

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

приведет к показу указанного файла.