GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ist es ein Uuoc (nutzlose Verwendung von Cat), eine Datei in eine andere umzuleiten?

Wenn ich den Inhalt von file2 machen möchte mit dem Inhalt von file1 übereinstimmen , könnte ich natürlich einfach cp file1 file2 ausführen .

Wenn ich jedoch alles erhalten möchte über file2 außer den Inhalt – Eigentümer, Berechtigungen, erweiterte Attribute, ACLs, feste Links usw. usw., dann würde ich cp nicht ausführen wollen .* In diesem Fall möchte ich nur den Inhalt von file1 ploppen in file2 .

Es sieht so aus, als würde Folgendes funktionieren:

< file1 > file2

Aber es funktioniert nicht. file2 auf nichts gekürzt und nicht geschrieben. Allerdings

cat < file1 > file2

macht Arbeit.

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 Sie einfach Umleitungen verwenden?

Hinweis:Mir ist bewusst, dass UUOC eher ein pedantischer Punkt als ein echtes Anti-Pattern ist.

*Wie tniles09 festgestellt hat, cp wird in diesem Fall tatsächlich funktionieren.

Akzeptierte Antwort:

cat < file1 > file2 ist kein UUOC. Klassischerweise < und > führen Umleitungen durch, die Dateideskriptor-Duplizierungen auf Systemebene entsprechen.
Dateideskriptor-Duplizierungen an sich bewirken nichts (na ja, > Umleitungen werden mit O_TRUNC geöffnet , um genau zu sein, kürzen Ausgabeumleitungen die Ausgabedatei). Lassen Sie nicht den < > Symbole verwirren Sie. Umleitungen verschieben keine Daten – sie weisen Dateideskriptoren anderen Dateideskriptoren zu.

In diesem Fall öffnen Sie file1 und weisen Sie diesen Dateideskriptor dem Dateideskriptor zu (<file1 ==0<file1 ) und file2 und weisen Sie diesen Dateideskriptor dem Dateideskriptor 1 zu (>file2 ==1>file2 ).

Jetzt, da Sie zwei Dateideskriptoren haben, brauchen Sie einen Prozess, um Daten zwischen den beiden zu schaufeln – und das ist cat ist für.


Linux
  1. Kopieren Sie die letzten N-Zeilen von einer Datei in eine andere?

  2. Ist es möglich, / in einem Dateinamen zu verwenden?

  3. So fügen Sie den Inhalt mehrerer Dateien in eine Datei ein

  4. Wie finde ich Wörter aus einer Datei in einer anderen Datei?

  5. Kann ich eine Virtualbox-Festplatte für mehrere Maschinen verwenden?

So verwenden Sie Nginx zum Umleiten

Cat-Befehl unter Linux

Erklärte Linux-Dateisystemtypen, welche Sie verwenden sollten

So kopieren oder klonen Sie Berechtigungen von einer Datei in eine andere unter Linux

Wie kopiert man eine Datei aus einem anderen Verzeichnis in das aktuelle?

Ist es besser, cat, dd, pv oder ein anderes Verfahren zum Kopieren einer CD/DVD zu verwenden?