compreende uma sequência de redirecionamentos

8

Se vários redirecionamentos são usados juntos, mudar a ordem deles faz diferença?

Como entender o significado da sua ordem? O canal encadeado de redirecionamentos é construído para ler os redirecionamentos da esquerda para a direita ou da direita para a esquerda?

Por exemplo

command 2>&1 > somefile

command > somefile 2>&1

Obrigado e cumprimentos!

    
por Tim 10.07.2011 / 00:51

2 respostas

7

Sim, o pedido faz a diferença e deve ser lido da esquerda para a direita.

command 2>&1 >somefile significa redirecionar stderr (2) para o destino atual do stdout (o terminal). Em seguida, altere o stdout para ir para somefile . Então stderr vai para o terminal e stdout vai para um arquivo.

command >somefile 2>&1 significa redirecionar o stdout para somefile e, em seguida, redirecionar o stderr para o mesmo destino que o stdout (o arquivo). Então stderr e stdout vão para somefile .

Isso é explicado na seção 3.6 do manual de Bash: Redirecionamentos .

    
por 10.07.2011 / 01:50
1
man bash 

diz:

REDIRECTION Before a command is executed, its input and output may be redirected using a special notation interpreted by the shell. Redi‐ rection may also be used to open and close files for the current shell execution environment. The following redirection opera‐ tors may precede or appear anywhere within a simple command or may follow a command. Redirections are processed in the order they appear, from left to right.

e

Note that the order of redirections is significant. For example, the command

ls > dirlist 2>&1

directs both standard output and standard error to the file dirlist, while the command

ls 2>&1 > dirlist

directs only the standard output to file dirlist, because the standard error was duplicated from the standard output before the standard output was redirected to dirlist.

    
por 10.07.2011 / 01:50