Удалите пробелы в результате `ls` в macOS

270
jihu

Когда я запускаю команду lsв macOS, она показывает имена папок одинаковой длины, пробелы для коротких имен папок: jihu@ksm1 Home $ ls bin code devel opt personal shared

В то время как в Linux это выглядит намного лучше: jihu@hqlin1 Home $ ls bin code devel opt personal shared

Есть ли варианты убрать пробелы в macOS? В обеих системах я использую Bash.

0
Bash не влияет на вывод внешних программ, он только запускает их. grawity 5 лет назад 0
Not sure about `ls` on Linux, but what Mac's `'ls` is trying to do is to create "columns" of output. Run `ls` on a folder with a lot of files, and you'll see how nicely everything lines up. You're right, it doesn't look good if the spacing only affects one line, but try it on a big folder and I think you'll like it. Perhaps Linux `ls` is smart enough to do the column-thing if there's more than one row, but skip if there's only one row? jimtut 5 лет назад 0
@jimtut, на самом деле, я думаю, это потому, что GNU `ls` готов использовать пробелы (а не только вкладки) при достижении столбчатого вывода (см. https://github.com/coreutils/coreutils/blob/master/src/ls. c # L4958) тогда как BSD `ls` будет когда-либо использовать только вкладки. Поскольку вкладки обычно больше пробела, максимальное количество столбцов, которые можно разместить в одной строке с помощью BSD `ls`, меньше ... Anon 5 лет назад 0

1 ответ на вопрос

3
Anon

При просмотре в man lsmacOS вам может понравиться -mопция, которая разделяет записи запятыми, или -1опция, если вы согласны с каждой записью в новой строке. Я полагаю, что вы могли бы сделать, ls -C | tr -s "\t" " "но это кажется немного неуклюжим ...

Экстремальное решение может состоять в том, чтобы использовать что-то вроде Homebrew для установки, coreutilsи это даст вам доступ gls(GNU, lsно с другим именем, чтобы избежать конфликтов), который поступает из того же самого апстрима, что lsвы используете в Linux.