Redirecionamento de saída no início da linha

2

Estou acostumado a especificar o redirecionamento de saída no final da linha, como:

echo blah > output.txt

Ambos no Windows e * nix.

Recentemente, estou vendo mais e mais exemplos que redirecionam no início da linha, como:

> output.txt echo blah

Novamente, isso parece funcionar tanto no Windows como no * nix.

Existe alguma vantagem em redirecionar a saída no início de uma linha? Será que se comporta de forma idêntica ao redirecionamento no final de uma linha ou existe alguma diferença? Por que existem as duas opções?

    
por Martin Prikryl 21.11.2014 / 11:18

2 respostas

3

Para exemplos simples, não importa onde o redirecionamento acontece. É uma escolha de estilo de codificação aqui. O estados do manual de Bash :

The (...) redirection operators may precede or appear anywhere within a simple command or may follow a command.

O que é um comando simples ?

A simple command is the kind of command encountered most often. It’s just a sequence of words separated by blanks, terminated by one of the shell’s control operators (see Definitions). The first word generally specifies a command to be executed, with the rest of the words being that command’s arguments.

A ordem dos comandos de redirecionamento é importante quando há mais de um, obviamente.

    
por 21.11.2014 / 11:22
1

Suponha que você queira escrever count: 1 em um arquivo.

No Windows, echo count: 1>file.txt gravará count : no arquivo (sem o 1) porque o 1 é interpretado como stdout. Você pode usar echo count: 1 >file.txt , mas há um espaço à direita indesejado. Colocar o redirecionamento na frente evita o problema: >file.txt echo count: 1 .

Não tenho certeza, se isso também se aplica a 'nix, mas suspeito que sim.

    
por 21.11.2014 / 22:53