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