![Por que o redirecionamento de E/S não funciona ao eliminar trabalhos em segundo plano?](https://rvso.com/image/122424/Por%20que%20o%20redirecionamento%20de%20E%2FS%20n%C3%A3o%20funciona%20ao%20eliminar%20trabalhos%20em%20segundo%20plano%3F.png)
[~]$ kill %123
bash: kill: %123: no such job
[~]$ kill %123 2>&1 > /dev/null
bash: kill: %123: no such job
Quero desabilitar todas as saídas durante a eliminação de trabalhos em segundo plano.
A primeira saída é esperada. No entanto, a segunda saída não é.
Conforme mostrado na linha de comando, adiciono 2>&1
para redirecionar stderr
para stdout
e uso > /dev/null
para redirecionar toda a saída para o dispositivo nulo. Mas a saída ainda é mostrada no terminal.
Alguma explicação?
Desde já, obrigado.
Informação atualizada:
O seguinte comando funciona conforme o esperado:
kill %123 > /dev/null 2>&1
Responder1
O redirecionamento de saída é uma propriedade do processo. Portanto, ao redirecionar com 2>&1 isso define oatualsaída de stdout para stderr que é o TTY atual, então o seguinte > define o stdout para /dev/null que deixa stderr definido para o TTY. Nas suas informações atualizadas, você configurou corretamente o stdout primeiro, para que ambos acabem sendo/dev/null.