Якщо я хочу, щоб зміст file2збігався зі змістом file1, я, очевидно, міг би просто запустити cp file1 file2.
Однак, якщо я хочу , щоб зберегти всі про file2 окрім Змісту-власника, права доступу, розширені атрибути, списки управління доступом, жорсткі посилання і т.д., і т.д., то я не хотів би працювати cp. * В цьому випадку я просто хочу , щоб грюкнути вмісту file1в file2.
Схоже, це зробить наступне:
< file1 > file2
Але це не працює. file2обрізається нічим і не пишеться. Однак,
cat < file1 > file2
справді працює.
Мене здивувало, що перша версія не працює.
Чи є друга версія UUOC? Чи є спосіб зробити це без виклику команди, лише використовуючи перенаправлення?
Примітка. Я усвідомлюю, що UUOC - це скоріше педантична точка, ніж справжня антидіаграма.
* Як виявив tniles09 , cp буде насправді робота в цьому випадку.
<...
file1його немає, або ще не читається, і ви відкриваєте його до того, < як > буде відкрито вихід, а потім подумайте, що відбувається, коли ви дозволите catспробувати його відкрити.
cat(за замовчуванням), по суті виконуючи другу команду. Більше про це див. У відповіді Стефана Шазеласа нижче, ніж у коментарі.
< file1 > file2залежить те, що ви хочете, залежить від оболонок.