Respostas:
O operador> redireciona a saída geralmente para um arquivo, mas pode ser para um dispositivo. Você também pode usar >> para acrescentar.
Se você não especificar um número, o fluxo de saída padrão será assumido, mas você também poderá redirecionar erros
> file
redireciona stdout para arquivo
1> file
redireciona stdout para arquivo
2> file
redireciona stderr para arquivo
&> file
redireciona stdout e stderr para arquivo
/dev/null
é o dispositivo nulo, ele pega qualquer entrada que você deseja e joga fora. Pode ser usado para suprimir qualquer saída.
2>&1
uma sintaxe mais antiga, portanto &>
não teria funcionado anos atrás, mas ambos são equivalentes.
Em resumo, ele redireciona stderr
(fd 2) para o buraco negro (descarta a saída do comando).
Alguns casos de uso mais comuns para redirecionamento:
command > /dev/null 2>&1 &
Execute command
em segundo plano, descarte stdout
estderr
command >> /path/to/log 2>&1 &
Execute command
e acrescente stdout e stderr a um arquivo de log.
No Bash 4+, uma forma mais curta (mas menos legível) é funcional
command &>> /path/to/log
> /dev/null 2>&1
vez de &> /dev/null
?
&>
é novo no Bash 4, o primeiro é apenas a maneira tradicional, estou tão acostumado a isso (fácil de lembrar).
&> /dev/null
pode não funcionar em alguns shells, mas> / dev / null 2> & 1 funcionará em todos os shells compatíveis com POSIX.
fn>target
onde fn
um número de arquivo (0-2 geralmente, alguns programas definem mais números) e target
geralmente é um nome de arquivo, mas aqui está outro número de arquivo - prefixado com o &
qual é o sintaxe para "Quero um número de arquivo em vez de um nome de arquivo".
/dev/null
é tratado como um buraco negro no Linux / Unix, para que você possa colocar algo nisso, mas não poderá recuperá-lo /dev/null
.
Além disso, 2>
significa que você está redirecionando (ou seja >
) o stderr (ou seja 2
) para o buraco negro (ou seja /dev/null
)
Seu comando é:
grep -i 'abc' content 2>/dev/null
Não tente terminar com outra barra como esta - 2>/dev/null/
(não é um diretório).
O conteúdo grep -i 'abc' gerará uma saída exibida no seu console, incluindo erros.
A especificação 2>/dev/null
filtrará os erros para que eles não sejam gerados no console.
Mais detalhadamente: 2 representa o descritor de erros, onde os erros são gravados. Por padrão, eles são impressos no console.
\>
redireciona a saída para o local especificado, neste caso /dev/null
/dev/null
é o dispositivo Linux padrão para o qual você envia a saída que deseja ignorar.
> /dev/null 2>&1
e&> /dev/null