Para detalhar meu comentário sobre a resposta de John Moon, aqui está uma função que agrupa ls
e adiciona um sinal -a
se o caminho corresponder a uma determinada lista:
function ls() {
# if no arguments are provided, the current directory is assumed
[ "$#" -eq 0 ] && set .
case "$(realpath "$1")" in
(/path/to/jason/filestoprocess*|\
/path/to/jason/otherfilestoprocess*)
set -- -a "$1" ;;
esac
command ls "$@"
}
A primeira seção da função verifica se um ls
está sendo feito; Neste caso, definimos .
(o diretório atual) como parâmetro # 1; caso contrário, assumimos que o primeiro parâmetro (fornecido) é o caminho a ser listado.
Se o caminho definido ou definido corresponder aos padrões listados (ou ... filestoprocess ou ... otherfilestoprocess aqui), usaremos set
novamente para incluir o -a
flag nos parâmetros. No final, usamos command
para chamar o comando ls
real com os argumentos que organizamos. Graças a muru por apontar a simplificação set
Para adicionar mais caminhos, simplesmente continue os padrões, separando-os com o canal (|)
caracteres. Eu quebrei os dois padrões existentes em linhas separadas com o caractere de escape de contrabarra \
para facilitar a leitura.
Se você tiver ls
aliased para algo que já tenha precedência, precisará ser removido para que essa função funcione (caso contrário, todos os sinalizadores adicionados pelo alias serão transmitidos para essa função e terminarão em $1
). Se houver flags que você gostaria de ter em ls
por padrão, basta adicioná-las às duas chamadas command ls
correspondentes.