Redirecionamentos em shells do estilo Bourne / POSIX como o bash , dash, ksh , etc.
processed in the order they appear, from left to right
> x abre e trunca arquivo x e define o descritor de arquivo que grava em x como saída padrão. Seu comando:
cat file1 > file2 > file3
- Abra e trunque
file2 - Definir saída padrão para gravar no descritor de arquivo
- Abra e trunque
file3 - Definir saída padrão para gravar no descritor de arquivo
- Executar
cat file1
O resultado final é que a saída padrão aponta para file3 no momento em que cat é executado. Tanto file2 como file3 têm seu conteúdo atual apagado, e file3 obtém a saída de cat (o conteúdo de file1 ) gravado nele.
Se você quiser dividir a saída em vários fluxos gravados em arquivos separados, você pode usar tee :
cat file1 | tee file2 > file3
Outros shells ( notavelmente zsh ) se comportam de maneira diferente, e seu comando teria o resultado que você provavelmente esperava: ambos file2 e file3 teriam o conteúdo de file1 .
Note que cat não é necessário aqui; O redirecionamento de < input também funcionaria bem.