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