Quasi ogni volta che 'cd' in una directory diversa sulla mia macchina (in questo caso, eseguendo Mac OS X 10.6.7) tramite la riga di comando (che è bash), digito immediatamente 'ls' per ottenere l'elenco dei contenuti in quella directory. Sto cercando di trovare un modo per sovrascrivere 'cd' in modo che cambi nella directory richiesta e poi mi dia l'elenco in un colpo solo.
Sono stato in grado di ottenere le funzionalità di base che sto cercando di lavorare con la seguente riga aggiunta al mio ~ / .bash_profile
function cl() { cd "$@"; ls -l; }
Funziona come previsto. Passare alla directory richiesta e quindi mostrarmi i contenuti. Il punto in cui mi imbatto in un problema sta cercando di sovrascrivere "cd" stesso invece di creare un nuovo comando "cl".
Le seguenti cose non funzionano
##### 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;
Ho anche provato diverse altre iterazioni che non sono elencate, oltre a creare un alias che punta alla funzione 'cl' funzionante. Nessuno dei quali ha funzionato.
Quello che ho letto nella documentazione parla del fatto che 'cd' non può essere eseguito come comando esterno (che è quello che ho capito essere il modo in cui la funzione avrebbe bisogno di usarlo).
Quindi, attualmente posso usare il mio comando "cl" e ottenere ciò che voglio, ma la domanda è / rimane:
C'è un modo per sovrascrivere il comportamento di 'cd' per farlo cambiare nella directory richiesta e poi fare qualcos'altro in seguito?