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.