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

Warum liefert xargs -L das richtige Format und xargs -n nicht?

-L spaltet durch Zeilen; echo trennt seine Ausgabe nicht durch Zeilen, sondern durch Leerzeichen, also ein einzelnes ls -l ausgeführt wird und alle Spalten als Gruppe formatiert.

-n Splits nach Parametern; in Abwesenheit von -L oder -0 , das Trennzeichen ist ein Leerzeichen (möglicherweise durch Anführungszeichen modifiziert), sodass jeder Dateiname seinen eigenen ls -l erhält laufen und es gibt keine Möglichkeit für die unabhängigen Läufe, Spaltenbreiten zu koordinieren.


Der POSIX-Standard verlangt:

-L Nummer

Das Dienstprogramm soll für jeden nicht leeren number ausgeführt werden Linien von Argumenten aus der Standardeingabe. Der letzte Aufruf des Dienstprogramms muss mit weniger Argumentzeilen erfolgen, wenn weniger als eine Anzahl verbleiben. Eine Linie endet mit dem ersten, es sei denn, das letzte Zeichen der Zeile ist ein <blank>; eine nachgestellte <blank> signalisiert die Fortsetzung zur nächsten nicht leeren Zeile, einschließlich.

-n Nummer

Rufen Sie das Dienstprogramm mit so vielen Standardeingabe-Argumenten auf wie möglich, bis zu Anzahl (eine positive Dezimalzahl) Argumente Maximum.

(Hervorhebung hinzugefügt.) Seit echo * erzeugt eine einzelne Zeile, xargs -L 1 füttert einfach alle Dateinamen mit ls sofort, und nur dann kann ls Richten Sie die Spalten gut aus.

(Mit anderen Worten, Ihr erster Befehl entspricht ls -l index.html* , außer dass Dateinamen mit Leerzeichen nicht korrekt behandelt werden.)


Linux
  1. Warum „sshpass“ nicht der richtige Weg ist, um Dateiübertragungen unter Linux zu automatisieren

  2. Warum funktioniert der reguläre Ausdruck in X, aber nicht in Y?

  3. BCRYPT - Warum verwenden die Linux-Distributionen es nicht standardmäßig?

  4. Warum benötigt der 'bin'-Benutzer eine Login-Shell?

  5. Warum hat pvremove eine doppelte Force in der Manpage?

Warum zeigt das Htop-Meter> 90 % an, während die Tabelle 0,0 % anzeigt?

Warum verwendet niemand die True Bourne Shell als /bin/sh?

Warum interpretiert der C-Präprozessor das Wort Linux als Konstante 1?

Warum führt das Forking meines Prozesses dazu, dass die Datei unendlich gelesen wird?

Warum gibt mir rsync über SSH den 10-fachen Durchsatz von SCP?

Warum funktioniert das Setuid-Bit inkonsistent?