Если я хочу, чтобы содержимое file2
совпадало с содержимым file1
, я мог бы просто запустить cp file1 file2
.
Однако, если я хочу , чтобы сохранить все о file2
кроме Содержанию-владельца, права доступа, расширенные атрибуты, списки управления доступом, жесткие ссылки и т.д., и т.д., то я не хотел бы работать cp
. * В этом случае я просто хочу , чтобы хлопнуть содержание file1
в file2
.
Похоже, что следующий будет делать это:
< file1 > file2
Но это не работает. file2
обрезается до нуля и не записывается. Тем не мение,
cat < file1 > file2
делает работу.
Меня удивило, что первая версия не работает.
Вторая версия - UUOC? Есть ли способ сделать это без вызова команды, просто с помощью перенаправлений?
Примечание: я знаю, что UUOC является скорее педантичным, чем настоящим анти-паттерном.
* Как обнаружил tniles09 , на самом деле cp
будет работать в этом случае.
<
...
file1
не существует, или же невозможно прочитать, и вы открываете его <
до открытия >
вывода, а затем подумайте, что произойдет, если вы cat
попытаетесь открыть его.
cat
(по умолчанию), по сути, запускающая вторую команду. См. Ответ Стефана Шазеласа ниже, чтобы больше узнать об этом, чем вписывается в комментарий.
< file1 > file2
Делает ли то, что вы хотите, зависит от оболочки.