ls
não tem opção para fazer isso, mas uma das coisas boas sobre o unix e o linux é que pipelines inelegantes e cansativos podem ser facilmente transformados em scripts, funções ou alias de shell. e estes podem, por sua vez, ser usados em pipelines como qualquer outro programa.
(OBSERVAÇÃO: existem alguns problemas de escopo com funções e aliases. Os scripts estão disponíveis para qualquer executável que possa lê-los e executá-los. Aliases e funções estão disponíveis apenas no shell atual - embora o .profile / .bashrc etc de um sub-shell possa redefinir Além disso, um script pode ser escrito em qualquer idioma - incluindo bash / sh, awk, perl, python e outros - o que for melhor para o trabalho ou com o qual você esteja mais familiarizado)
por exemplo
alias lsf='find . -maxdepth 1 -type f -print0 | xargs -0r ls'
Adicionei xargs para que você possa usar todas as ls
opções usuais , por exemplolsf -lrS
Como ele usa find
, todos os arquivos de ponto normalmente ocultos serão exibidos e todos os nomes de arquivos serão prefixados com ./ - essa é a única diferença que você notará.
Você pode excluir arquivos de ponto com, ! -iname '.*'
mas precisará ter duas versões do alias - uma que exibisse arquivos de ponto e outra que não.
alias lsf2='find . -maxdepth 1 -type f -a ! -iname '\''.*'\'' -print0 | xargs -0r ls'
Como alternativa, se lsf
fosse um script em vez de um alias, você poderia analisar as opções (talvez com getopts ou / usr / bin / getopt ou similar) e excluir arquivos de ponto a menos que -a
estivesse presente.
find
comando é a melhor maneira de fazer o que você deseja. Para outras opções confiáveis, você deve procurar comandos específicos do shell (e esses são tudo menos portáteis)!