Não sei bem o que você quer com sua última frase, desculpe;)
Estou assumindo que você deseja que ll
tenha a funcionalidade de ls -Alh
exceto quando for chamado por ll -f
- nesse caso, ele deve listar apenas os diretórios ocultos. Se não é isso que você estava procurando, deve ser relativamente fácil de ajustar. Basta adicionar todos os seus sinalizadores que tenham um significado especial ao comando getopts
e, em seguida, escrever um caso para cada um desses sinalizadores. O caso padrão deve sempre ser break
, de modo que, se você passar um sinalizador que não tenha um significado especial para sua função, então ls -Alh
será executado.
Em qualquer caso, aqui está um script que você pode criar para definir uma função chamada ll
(aliases não são poderosos para fazer o que você quer). Você deve source , ou seja, source <script>
do script, para que a função seja definida. Tenha cuidado para fazer unalias ll
antes de pesquisar o script ou coisas inesperadas podem acontecer.
#!/usr/bin/env bash
ll() {
while getopts ":f" opt; do
case $opt in
f)
command ls -Ald .*/
return 0
;;
\?)
break;
esac
done
command ls -Alh "$@"
}
Isso fará com que ll -f
se comporte como ls -Ald .*/
, que lista todos os diretórios ocultos. Se você der a ll
um sinalizador que seja não -f
, o padrão será chamar ls -Alh "$@"
( $@
simplesmente significa "todos os argumentos"). Por exemplo, se você escrever ll -d Desktop
, ls -Alhd Desktop
será executado. Se nenhum sinalizador for passado para ll
, ele apenas executará ls -Alh "$@"
.