Sempre que eu 'cd' em um diretório diferente na minha máquina (nesse caso, executando o Mac OS X 10.6.7) pela linha de comando (que é o bash), eu imediatamente digito 'ls' para obter a lista de conteúdos nesse diretório. Estou tentando descobrir uma maneira de substituir o 'cd' para que ele mude para o diretório solicitado e depois me dê a lista de uma só vez.
Consegui obter a funcionalidade básica que estou procurando trabalhar com a seguinte linha adicionada ao meu ~ / .bash_profile
function cl() { cd "$@"; ls -l; }
Isso funciona conforme o esperado. Mudando para o diretório solicitado e depois me mostrando o conteúdo. Onde encontro um problema é tentar substituir o próprio "cd" em vez de criar um novo comando "cl".
O seguinte não funciona
##### Attempt 1 #####
# Hangs the command line
function cd() { cd "$@"; ls -l; }
##### Attempt 2 #####
# Hangs the command line
function cd() { 'cd' "$@"; ls -l; }
##### Attempt 3 #####
# Does not change directory.
# Does list contents, but of the directory where you started.
function cd() { /usr/bin/cd "$@"; ls -l; }
#### Other attempts that fail in various ways #####
alias cd=cd "$@"; ls -la;
alias cd="cd '$@'; ls -la;"
alias cd='cd "$@"'; ls -la;
alias cd=/usr/bin/cd "$@"; ls -la;
Também tentei várias outras iterações que não estão listadas, além de criar um alias que aponta para a função 'cl' em funcionamento. Nenhum dos quais funcionou.
O que li na documentação fala sobre o fato de que 'cd' não pode ser executado como um comando externo (que é o que eu entendo ser o modo como a função precisaria usá-lo).
Portanto, atualmente posso usar meu comando "cl" e obter o que quero, mas a questão é / permanece:
Existe uma maneira de substituir o comportamento do 'cd' para que ele mude para o diretório solicitado e faça outra coisa depois?