lsперевіряє, чи буде вихід на термінал. Якщо вихід не збирається до терміналу, то -1це за замовчуванням. (Це може бути скасовано одним з -C, -mабо -xопцій.)
Таким чином, коли lsвикористовується в конвеєрі, і ви не перекрили його іншим варіантом, він lsбуде використовувати -1. Ви можете покластися на це, оскільки така поведінка вимагає POSIX
Специфікація POSIX
POSIX вимагає -1за замовчуванням кожен раз, коли вихід не збирається в термінал:
Специфікація POSIX :
Формат за замовчуванням повинен містити перелік одного запису на рядок до стандартного виводу; винятки становлять термінали або коли вказано один із параметрів -C, -m або -x. Якщо висновок призначений для терміналу, формат визначається реалізацією.
Ці три варіанти, які змінюють формат одноколонного за замовчуванням:
-C
Запишіть висновки багатотекстових стовпців із записами, відсортованими стовпцями, відповідно до послідовності згортання. Кількість текстових стовпців та символів роздільника стовпців не визначено, але їх слід адаптувати до характеру пристрою виводу. Ця опція вимикає вихід довгого формату.
-м
формат виходу потоку; список імен шляхів на всій сторінці, розділених символом <comma>, а потім символом <space>. Використовуйте символ <newline> як термінатор списку та після послідовності роздільника, коли в рядку немає місця для наступного запису списку. Ця опція вимикає вихід довгого формату.
-x
Те саме, що і -C, за винятком того, що висновок мультитекстового стовпця виробляється із записами, відсортованими в стовпцях, а не вниз. Ця опція вимикає вихід довгого формату.
Документація GNU
З посібника GNU :
'-1'
'--format = одноколонка'
Перерахуйте один файл у рядку. Це значення за замовчуванням для ls, коли стандартний вихід не є терміналом . Дивіться також параметри -b та -q для придушення прямого виводу символів нового рядка в імені файлу. [Наголос додано]
Приклади
Створимо три файли:
$ touch file{1..3}
Коли вихід надходить до терміналу, GNU lsвирішує використовувати формат у декількох стовпцях:
$ ls
file1 file2 file3
Коли вихід виходить на конвеєр, специфікація POSIX вимагає, щоб одноколонний за замовчуванням:
$ ls | cat
file1
file2
file3
Три винятки, які переосмислюють поведінку однієї колонки за замовчуванням, -mстосуються розділених комами, -Cсортування стовпців та -xвідсортованих стовпців:
$ 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( відмініть . *, якщо ви не хочете рахувати їх). або:ls -1d ./.* ./* | grep '^\./' | wc -l(оскільки назви файлів не можуть містити '/')