Они недействительны в csh
. Каково общее правило их использования в bash
и zsh
?
решение1
В bash перенаправления без команды просто выполняют перенаправления, а затем закрывают их:
< foo.txt
сама по себе в виде командной строки откроет файлfoo.txt
для чтения, а затем закроет его.> foo.txt
откроет файлfoo.txt
для записи, создав его при необходимости и обрезав, а затем закроет его. Быстрый способ очистить файл.
С zsh перенаправления без команды запускаются NULLCMD
или READNULLCMD
.
READNULLCMD
(илиNULLCMD
, если `READNULLCMD не установлен) для перенаправления stdin:% echo foo > foo.txt % READNULLCMD=nl % < foo.txt 1 foo
NULLCMD
для перенаправления stdout:% NULLCMD='ls' % > foo.txt # runs $NULLCMD % < foo.txt # runs $READNULLCMD, showing the output of `NULLCMD` run previously 1 Applications 2 Desktop 3 Documents 4 Downloads
ВидетьZsh 7.3, Перенаправления без командыдля получения подробной информации:
Когда простая команда состоит из одного или нескольких операторов перенаправления и нуля или более назначений параметров, но не содержит имени команды, zsh может вести себя несколькими способами.
Если параметр
NULLCMD
не задан или задана опцияCSH_NULLCMD
, возникает ошибка. Этоcshповедение иCSH_NULLCMD
устанавливается по умолчанию при эмуляцииcsh.Если опция
SH_NULLCMD
установлена, встроенная команда:
вставляется как команда с заданными перенаправлениями. Это значение по умолчанию при эмуляциишиликш.В противном случае, если параметр
NULLCMD
установлен, его значение будет использоваться как команда с заданными перенаправлениями. Если установлены обаNULLCMD
иREADNULLCMD
, то значение последнего будет использоваться вместо значения первого, когда перенаправление является вводом. Значение по умолчанию дляNULLCMD
— 'cat
', а дляREADNULLCMD
— 'more
'. Таким образом< file
отображает содержимое файла на стандартном выводе с разбиением на страницы, если это терминал.
NULLCMD
иREADNULLCMD
может относиться к функциям оболочки.