Виведення ls
(без аргументів), як видається, розділяє назви файлів з рядковими розривами.
Докази:
ls | grep foo
працює, як очікувалося,grep
трактуючи кожне ім'я файлу як окремий рядок введення.ls > files.txt; vim files.txt
-> у Vim кожен файл знаходиться в окремому рядку
І все ж у терміналі виведення ls
кладе кілька файлів в один рядок, розділяючи назви файлів пробілами, щоб зробити чітко вирівняні стовпці:
$ ls
a.txt b.txt c.txt
Отже, моє запитання: як це робити?
Чи використовується спеціальний графік управління, щоб "підробити" новий рядок? Або він знає, коли його вихід переносять на іншу команду, і форматують його в іншому випадку?
ls
використовує для визначення, чи є вихідним терміналомisatty(3)
.