Remova os espaços de preenchimento no resultado `ls` no macOS

0

Quando executo o comando lsno macOS, ele mostra os nomes das pastas com o mesmo comprimento, preenchendo espaços para nomes de pastas curtas: jihu@ksm1 Home $ ls bin code devel opt personal shared

Enquanto no Linux parece muito melhor: jihu@hqlin1 Home $ ls bin code devel opt personal shared

Existe alguma opção para remover os espaços de preenchimento no macOS? Em ambos os sistemas eu estou usando o bash.

jihu
fonte
O Bash não afeta a saída de programas externos, apenas os inicia.
Grawity
Não tenho certeza sobre o lsLinux, mas o que o Mac 'lsestá tentando fazer é criar "colunas" de saída. Corra lsem uma pasta com muitos arquivos e você verá como tudo está alinhado. Você está certo, não parece bom se o espaçamento afeta apenas uma linha, mas tente em uma pasta grande e eu acho que você vai gostar. Talvez o Linux lsseja inteligente o suficiente para fazer a coluna, se houver mais de uma linha, mas pule se houver apenas uma linha?
jimtut
@jimtut na verdade eu acho que é porque GNU lsestá disposto a usar espaços (em vez de e não só guias) quando alcançar saída colunar (ver github.com/coreutils/coreutils/blob/master/src/ls.c#L4958 ) enquanto que BSD lsvai só use abas. Como as abas são tipicamente maiores que um espaço, o número máximo de colunas que podem ser ajustadas em uma linha com BSD lsé menor ...
Anon

Respostas:

3

Olhando para o man lsmacOS você pode gostar da -mopção que apenas separa entradas com vírgulas ou a -1opção se você estiver OK com cada entrada em uma nova linha. Eu suponho que você também pode fazer, ls -C | tr -s "\t" " "mas isso parece um pouco desajeitado ...

Uma solução extrema pode ser usar algo como Homebrew para instalar coreutilse que lhe daria acesso a gls(GNU, lsmas com um nome diferente para evitar conflitos) que vem do mesmo upstream que o que lsvocê está usando no Linux.

Anon
fonte