-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.)