lssprawdza, czy wyjście trafia do terminala. Jeśli dane wyjściowe nie trafiają do terminala, to -1jest to ustawienie domyślne. (To może być zmieniona przez jednego z -C, -mlub -xopcji).
Tak więc, gdy lsjest używany w potoku i nie zastąpiłeś go inną opcją, lsużyje -1. Możesz na tym polegać, ponieważ takie zachowanie jest wymagane przez POSIX
Specyfikacja POSIX
POSIX wymaga -1domyślnie, gdy dane wyjściowe nie trafiają do terminala:
Specyfikacja POSIX :
Domyślnym formatem jest wypisanie jednego wpisu w wierszu na standardowe wyjście; wyjątki dotyczą terminali lub gdy podano jedną z opcji -C, -m lub -x. Jeśli dane wyjściowe dotyczą terminala, format jest zdefiniowany w implementacji.
Te trzy opcje, które zastępują domyślny format jednokolumnowy to:
-C
Napisz wielotekstowy wynik z kolumn posortowanych według kolumn, zgodnie z kolejnością zestawiania. Liczba kolumn tekstowych i znaki separatora kolumn są nieokreślone, ale należy je dostosować do charakteru urządzenia wyjściowego. Ta opcja wyłącza wyjście w długim formacie.
-m
Format wyjściowy strumienia; wypisz nazwy ścieżek na całej stronie, oddzielone znakiem <comma>, a następnie znakiem <space>. Użyj znaku <nowa linia> jako terminatora listy i po sekwencji separatora, gdy w linii nie ma miejsca na następny wpis na liście. Ta opcja wyłącza wyjście w długim formacie.
-x
Taki sam jak -C, z wyjątkiem tego, że dane wyjściowe z wielu kolumn tekstowych są tworzone z wpisami posortowanymi w poprzek kolumn, a nie w dół, w kolumnach. Ta opcja wyłącza wyjście w długim formacie.
Dokumentacja GNU
Z podręcznika GNU ls :
„-1”
--format = pojedyncza kolumna ”Wyświetla
jeden plik w wierszu. Jest to ustawienie domyślne dla ls, gdy standardowe wyjście nie jest terminalem . Zobacz także opcje -b i -q, aby ukryć bezpośrednie wyświetlanie znaków nowego wiersza w nazwie pliku. [Podkreślenie dodane]
Przykłady
Utwórzmy trzy pliki:
$ touch file{1..3}
Gdy dane wyjściowe trafiają do terminala, GNU lsdecyduje się na użycie formatu wielokolumnowego:
$ ls
file1 file2 file3
Gdy dane wyjściowe trafiają do potoku, specyfikacja POSIX wymaga, aby domyślna była jedna kolumna:
$ ls | cat
file1
file2
file3
Trzy wyjątki, które zastępują domyślne zachowanie -mdla pojedynczej kolumny, dotyczą rozdzielania przecinkiem, -Csortowania kolumn i -xsortowania według kolumn:
$ ls -m | cat
file1, file2, file3
$ ls -C | cat
file1 file2 file3
$ ls -x | cat
file1 file2 file3
n=0; for i in .* *; do ((n++)) ; done ; echo $n(upuść. *, jeśli nie chcesz liczyć tych). lub:ls -1d ./.* ./* | grep '^\./' | wc -l(ponieważ nazwy plików nie mogą zawierać „/”)