-L
divide per linee; echo
non separa il suo output da righe ma da spazi, quindi un singolo ls -l
viene eseguito e formatta tutte le colonne come un gruppo.
-n
divide per parametri; in assenza di -L
o -0
, il separatore è uno spazio bianco (possibilmente modificato tra virgolette), quindi ogni nome file ottiene il proprio ls -l
run e non c'è modo per le esecuzioni indipendenti di coordinare le larghezze delle colonne.
Lo standard POSIX impone:
-L
numeroL'utilità deve essere eseguita per ogni
number
non vuoto linee di argomenti dallo standard input. L'ultima invocazione di utilità deve essere con meno righe di argomenti se rimane meno di numero. Una linea è considerato terminare con il primo a meno che l'ultimo carattere della riga non sia un<blank>
; un<blank>
finale segnala la continuazione alla prossima riga non vuota, inclusa.
-n
numeroRichiama l'utilità utilizzando il maggior numero di argomenti di input standard possibile, fino a numero (un numero intero decimale positivo) numero massimo di argomenti.
(Il corsivo è aggiunto.) Poiché echo *
produce una singola riga, xargs -L 1
invia semplicemente tutti i nomi dei file a ls
subito, e solo allora sarà possibile ls
allinea bene le colonne.
(In altre parole, il tuo primo comando equivale a ls -l index.html*
, tranne per il fatto che non gestisce correttamente i nomi di file contenenti spazi vuoti.)