Como ver de qual saída do descritor de arquivo está chegando?

3

Como ver de qual saída do descritor de arquivo está chegando?

$ echo hello  
hello  
$ echo hello 1>&2  
hello

todos vão para / dev / pts / 0
mas existem 3 descritores de arquivo 0,1,2

    
por Akhil J 25.08.2018 / 07:55

1 resposta

2

A saída ordinária acontece no descritor de arquivo 1 (saída padrão). A saída de diagnóstico, assim como a interação do usuário (solicitações etc.), ocorrem no descritor de arquivo 2 (erro padrão) e a entrada entra no programa no descritor de arquivo 0 (entrada padrão).

Exemplo de saída na saída / erro padrão:

echo 'This comes on stdout'
echo 'This comes on stderr' >&2

Em ambos os casos acima, echo grava na saída padrão, mas no segundo comando, a saída padrão do comando é redirecionada para o erro padrão.

Exemplo de filtragem (remoção) de um ou outro (ou ambos) dos canais de saída:

{
    echo 'This comes on stdout'
    echo 'This comes on stderr' >&2
} >/dev/null   # stderr will still be let through

{
    echo 'This comes on stdout'
    echo 'This comes on stderr' >&2
} 2>/dev/null   # stdout will still be let through

{
    echo 'This comes on stdout'
    echo 'This comes on stderr' >&2
} >/dev/null 2>&1   # neither stdout nor stderr will be let through

Os fluxos de saída estão conectados ao terminal atual ( /dev/pts/0 no seu caso), a menos que seja redirecionado em outro lugar, conforme mostrado acima.

    
por 25.08.2018 / 09:13