Eles não são válidos em csh
. Qual é a regra geral para usá-los em bash
e zsh
?
Responder1
Com o bash, os redirecionamentos sem comando apenas executam os redirecionamentos e depois fecham-nos:
< foo.txt
por si só como uma linha de comando abrirá o arquivofoo.txt
para leitura e depois o fechará.> foo.txt
irá abrir o arquivofoo.txt
para gravação, criando-o se necessário e truncando-o, e então fechá-lo. Maneira rápida de esvaziar um arquivo.
Com o zsh, os redirecionamentos sem um comando são executados NULLCMD
ou READNULLCMD
.
READNULLCMD
(ouNULLCMD
, se `READNULLCMD não estiver definido) para redirecionamentos de stdin:% echo foo > foo.txt % READNULLCMD=nl % < foo.txt 1 foo
NULLCMD
para redirecionamentos de 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
VerZsh 7.3, Redirecionamentos sem comandopara detalhes:
Quando um comando simples consiste em um ou mais operadores de redirecionamento e zero ou mais atribuições de parâmetros, mas nenhum nome de comando, o zsh pode se comportar de várias maneiras.
Se o parâmetro
NULLCMD
não estiver definido ou a opçãoCSH_NULLCMD
estiver definida, será causado um erro. Isto é ocshcomportamento eCSH_NULLCMD
é definido por padrão ao emularcsh.Se a opção
SH_NULLCMD
estiver definida, o builtin:
é inserido como um comando com os redirecionamentos fornecidos. Este é o padrão ao emularehouksh.Caso contrário, se o parâmetro
NULLCMD
estiver definido, seu valor será utilizado como comando com os redirecionamentos fornecidos. Se ambosNULLCMD
eREADNULLCMD
estiverem definidos, então o valor do último será usado em vez do primeiro quando o redirecionamento for uma entrada. O padrão paraNULLCMD
é 'cat
' e paraREADNULLCMD
é 'more
'. Por isso< file
mostra o conteúdo do arquivo na saída padrão, com paginação se for um terminal.
NULLCMD
eREADNULLCMD
pode referir-se a funções shell.