nohup gedit &> /dev/null
é a sintaxe POSIX e é a mesma que:
nohup gedit &
> /dev/null
Isso é executado em nohup gedit
em segundo plano e, em seguida, faz um redirecionamento > /dev/null
sem executar um comando.
nohup gedit >& /dev/null
não é a sintaxe POSIX e é a maneira csh
de redirecionar stdout e stderr para / dev / null. csh
não tem o operador 2>&1
como encontrado em Bourne, então é a única maneira de csh
redirecionar o stderr.
zsh
(como sempre) também fornece a sintaxe csh
, mas também suporta o operador x>&y
fd duplicação do shell Bourne, o que significa que existe um conflito.
ls >&file
redireciona stdout e stderr de ls
para file
, mas se o arquivo for 2
, você tem um problema como
ls >&2
significa stdout de redirecionamento para o recurso apontado por fd 2 ( dup(2, 1)
). Então você precisa escrever:
ls >& ./2
se você quiser redirecionar o stdout e o stderr de ls
para um arquivo chamado 2
no diretório atual; ou use a sintaxe padrão.
bash
inicialmente não entendeu >&
, mas introduziu o operador &>
para isso, quebrando a conformidade POSIX no processo (embora seja improvável que um script use cmd &> xxx
).
ksh
copiou esse operador em ksh93t + em 2009, mksh em R35 em 2008 (desabilitado no modo posix
) mas não >&
.
bash
adicionou suporte para >&
em 2.05.
busybox sh
adicionou suporte para &>
e >&
em 1.13 (2008).
Nem >&
nem &>
como significando redirect stdout e stderr são POSIX / Bourne.
Se você quiser redirecionar ambos, stdout e stderr, a sintaxe é
cmd > file 2>&1