grep em --help não funciona em alguns comandos

3

Acabei de me perguntar por que você não pode usar grep em alguns comandos --help.

Por exemplo, se eu usar ifconfig --help | grep unix , ele ainda imprime toda a ajuda em vez da linha com o unix.

Mas em grep --help | grep null funciona bem.

    
por 0xAffe 28.11.2013 / 09:45

1 resposta

5

ifconfig parece imprimir sua ajuda para stderr em vez de stdout . Como a canalização só passa a stdout para o próximo programa, grep não recebe a saída.

Uma maneira fácil de contornar isso é redirecionando stderr para stdout. Veja um exemplo de como fazer isso com a ajuda de ifconfig .

ifconfig --help 2>&1 | grep unix

produz a saída desejada

unix (UNIX Domain) inet (DARPA Internet) inet6 (IPv6)

Atualizar : 2>&1 é o que realmente redireciona ( > ) stderr ( 2 ) para a mesma saída ( & ) como stdout ( 1 ). Como geralmente stdout e stderr são impressos em seu terminal, você não vê a diferença, mas para a tubulação, o fluxo real é importante.

    
por drc 28.11.2013 / 09:53