Como funciona (echo 'text'; cat file.txt) o novo arquivo.txt? [duplicado]

1

Então, aqui está um código simples:

(echo "Some text to prepend"; cat gero.txt) > file.txt

E eu não consigo entender a mecânica desse código. Então, basicamente, o gero.txt é um arquivo já existente, criamos um novo arquivo.txt com "Some text to prepend" + gero.txt A coisa que não entendo é essa parte entre parênteses. Como exatamente ele redireciona a saída do eco para o gato sem nenhum operador evidente como o pipe | etc.?

    
por Simullacra 20.06.2018 / 00:13

2 respostas

4

Quando você executa uma sequência de comandos no shell interativo , como

echo xxx; cat file; ls; echo yyy

então tudo é executado consecutivamente e a saída é enviada para o terminal.

Mas, se você executar esses comandos dentro de parênteses () um novo shell não interativo será criado e tudo será executado dentro dele. Agora, com >file.txt após () , você redireciona toda a saída desse sub-shell oculto para um arquivo.

    
por 20.06.2018 / 01:02
1

O shell pega essa linha de comando em três partes:

  1. (echo ... )
  2. >
  3. file.txt

A saída (padrão) - não qualquer saída stderr - da parte 1 é redirecionada pela parte 2 para o arquivo dado na parte 3. O parêntese na parte um simplesmente agrupa todos os resultados para o operador de redirecionamento > .

    
por 20.06.2018 / 00:18