Вывод ls
(без аргументов), кажется, разделяет имена файлов с переносами строк.
Доказательства:
ls | grep foo
работает как положено, при этомgrep
рассматривает каждое имя файла как отдельную строку ввода.ls > files.txt; vim files.txt
-> в Vim каждый файл находится на отдельной строке
И все же в терминале вывод ls
помещает несколько файлов в одну строку, разделяя имена файлов пробелами, чтобы сделать хорошо выровненные столбцы:
$ ls
a.txt b.txt c.txt
Итак, мой вопрос: как мне это сделать?
Использует ли он какой-то специальный контрольный символ для «подделки» новой строки? Или он знает, когда его вывод передается другой команде, и в этом случае форматирует вывод иначе?