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
(оскільки назви файлів не можуть містити '/')