Se eu quiser fazer o conteúdo file2corresponder ao conteúdo file1, obviamente poderia simplesmente executar cp file1 file2.
No entanto, se eu quero preservar tudo sobre file2 exceto o conteúdo-proprietário, permissões, atributos estendidos, ACLs, hard links, etc., etc., então eu não quero correr cp. * Nesse caso, eu só quero plop o conteúdo de file1em file2.
Parece que o seguinte faria:
< file1 > file2
Mas isso não funciona. file2é truncado para nada e não gravado para. Contudo,
cat < file1 > file2
faz o trabalho.
Surpreendeu-me que a primeira versão não funcione.
A segunda versão é um UUOC? Existe uma maneira de fazer isso sem chamar um comando, apenas usando redirecionamentos?
Nota: Estou ciente de que o UUOC é mais um ponto pedante do que um verdadeiro anti-padrão.
* Como tniles09 descoberto , cp vontade de fato trabalhar neste caso.
<...
file1não existe ou então é ilegível e você o abre < antes que a > saída seja aberta e depois considere o que acontece quando você permite cattentar abri-lo.
cat(por padrão), essencialmente executando o segundo comando. Veja a resposta de Stéphane Chazelas abaixo para saber mais sobre o que cabe em um comentário.
< file1 > file2o que você quer depende do shell.