redirecionando a saída std e o erro std

3

Eu tenho tentado descobrir o relacionamento entre os descritores de arquivos. Uma coisa que não entendo é como é:

ls -l /bin/usr > ls-output.txt 2>&1

diferente de:

ls -l /bin/usr 2>&1 >ls-output.txt
    
por Works On Mine 25.03.2013 / 04:20

2 respostas

5

A ordem do redirecionamento é importante, pois eles são executados sequencialmente:

> nome do arquivo 2 > & 1

stdout ( fd 1 ) apontará para filename e depois o stderr ( fd 2 ) apontará para o destino de stdout neste exemplo filename .

Isso significa que stdout e stderr são redirecionados para filename

2 > & 1 > nome do arquivo

Aqui stderr ( fd 2 ) apontará para o destino de stdout e depois stdout ( fd 1 ) redirecionará para filename.

Isso significa que stderr será redirecionado para a meta original de stdout e stdout será redirecionado para filename .

Então, em suma, a ordem dos redirecionamentos é importante, pois cada filodescriptor é independente um do outro.

Informações adicionais

Para mais informações, veja algumas outras perguntas e respostas, como:

por 25.03.2013 / 04:48
-2

Eles não são.

a > & b redireciona fd a para fd b. se a não é dado, 1 é assumido. 1 é stdout e 2 é stderr.

Algumas conchas (por exemplo, Bash) também permitem especificar & > arquivo para redirecionar ambos ao mesmo tempo. No entanto, > 2 > 1 é mais portátil.

    
por 25.03.2013 / 04:30