Se voglio fare in modo che i contenuti di file2abbinino i contenuti di file1, potrei ovviamente semplicemente eseguire cp file1 file2.
Tuttavia, se voglio conservare tutto su file2 tranne il contenuto-proprietario, i permessi, attributi estesi, ACL, hard link, ecc, ecc, quindi non vorrei correre cp. * In questo caso voglio solo plop il contenuto di file1into file2.
Sembra che il seguente lo farebbe:
< file1 > file2
Ma non funziona file2viene troncato a nulla e non scritto. Tuttavia,
cat < file1 > file2
fa il lavoro.
Mi ha sorpreso che la prima versione non funzioni.
La seconda versione è un UUOC? C'è un modo per farlo senza invocare un comando, semplicemente usando i reindirizzamenti?
Nota: sono consapevole che UUOC è più un punto pedante che un vero anti-pattern.
* Come tniles09 scoperto , cp volontà nel lavoro fatto in questo caso.
<...
file1non esiste oppure è illeggibile e lo apri < prima > dell'apertura dell'output, quindi considera cosa succede quando permetti catdi provare ad aprirlo.
cat(per impostazione predefinita), essenzialmente eseguendo il secondo comando. Vedi la risposta di Stéphane Chazelas di seguito per ulteriori informazioni rispetto a quelle contenute in un commento.
< file1 > file2fa quello che vuoi dipende dalla shell.