Redirecionamento: Como a palavra extra entrou no arquivo?

5

Eu estava testando um script e queria criar um arquivo pequeno com um pouco de texto, então eu digitei o seguinte e esqueci de escapar do espaço no nome do arquivo:

echo "bob">other name

Quando eu fiz ls , ele mostrou o arquivo "other" e quando eu fiz cat other , ele mostrou o conteúdo como:

bob name

Como o "nome" entrou no arquivo? Acredito que vi em algum lugar que você pode colocar o redirecionamento em qualquer lugar em um comando. Na verdade, acabei de testar isso:

echo >other Some text in a file

e "Algum texto em um arquivo" era o conteúdo de "outro".

Qual é o objetivo deste recurso?

Claro, originalmente, eu deveria ter digitado:

echo "bob">other\ name
    
por Dennis Williamson 24.07.2009 / 03:43

1 resposta

13

É assim que o redirecionamento do bash funciona.

Escrevendo isto:

echo "bob">other name

é equivalente a isto:

echo "bob" name >other
O redirecionamento

pode aparecer em qualquer lugar na linha, a divisa ( > ) aplica-se apenas a "outro".

Isso permite às pessoas a flexibilidade de como desejam estruturar seus comandos. Se parece mais claro fazer algo assim:

>file.txt echo "one" "two" "three"

então é a pessoa que escreve o script ou o comando.

    
por 24.07.2009 / 04:18