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