ls
não tem opção para fazer isso, mas uma das coisas boas sobre o unix & linux é que pipelines longos e deselegantes podem ser facilmente transformados em um shell script, função ou alias. e estes, por sua vez, podem ser usados em pipelines como qualquer outro programa.
(NOTA: existem alguns problemas de escopo com funções e aliases. 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 de um sub-shell etc pode redefini-los e, assim, torná-los disponíveis.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ê está mais familiarizado)
por exemplo,
alias lsf='find . -maxdepth 1 -type f -print0 | xargs -0r ls'
Eu adicionei xargs para que você possa usar todas as opções usuais de ls
, por exemplo lsf -lrS
Como ele usa find
, todos os dotfiles 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 os arquivos de ponto com ! -iname '.*'
, mas você precisa ter duas versões do alias - uma que exiba arquivos de pontos e outra que não tenha.
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 dotfiles a menos que -a
estivesse presente.