Wenn ich möchte, dass der Inhalt von file2
mit dem Inhalt von übereinstimmt file1
, könnte ich natürlich einfach laufen cp file1 file2
.
Wenn ich jedoch beibehalten möchten alles über file2
außer dem Inhalt-Besitzer, Berechtigungen, erweiterte Attribute, ACLs, Hard - Links, etc., etc., dann würde ich nicht ausgeführt werden soll cp
. * In diesem Fall möchte ich nur die plop Inhalt von file1
in file2
.
Es sieht so aus, als würde das folgendermaßen aussehen:
< file1 > file2
Aber es geht nicht. file2
wird auf nichts abgeschnitten und nicht geschrieben. Jedoch,
cat < file1 > file2
funktioniert .
Es hat mich überrascht, dass die erste Version nicht funktioniert.
Ist die zweite Version ein UUOC? Gibt es eine Möglichkeit, dies zu tun, ohne einen Befehl aufzurufen, indem lediglich Umleitungen verwendet werden?
Anmerkung: Mir ist bewusst, dass UUOC eher ein pedantischer Punkt als ein echtes Anti-Pattern ist.
* Wie tniles09 entdeckt , cp
Wille tatsächlich Arbeit in diesem Fall.
<
...
file1
es keine gibt oder nicht lesbar ist, und öffnen Sie es mit, <
bevor die >
Ausgabe geöffnet wird. Überlegen Sie dann, was passiert, wenn Sie cat
versuchen, sie zu öffnen.
cat
(standardmäßig) ein leerer Befehl mit Umleitungen aufgerufen , der im Wesentlichen den zweiten Befehl ausführt . Siehe Stéphane Chazelas' Antwort unten für mehr dazu als fits in einem Kommentar.
< file1 > file2
tun, was Sie wollen, hängt von der Shell ab.