Casi cada vez que 'cd' a un directorio diferente en mi máquina (en este caso, ejecutando Mac OS X 10.6.7) a través de la línea de comando (que es bash), escribo inmediatamente 'ls' para obtener la lista de contenidos en ese directorio Estoy tratando de encontrar una manera de anular 'cd' para que cambie al directorio solicitado y luego me dé la lista de una vez.
He podido obtener la funcionalidad básica que estoy buscando trabajando con la siguiente línea agregada a mi ~ / .bash_profile
function cl() { cd "$@"; ls -l; }
Esto funciona como se esperaba. Cambiando al directorio solicitado y luego mostrándome el contenido. Donde me encuentro con un problema es intentar anular "cd" en lugar de crear un nuevo comando "cl".
Las siguientes cosas no funcionan
##### 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;
También probé varias otras iteraciones que no figuran en la lista, así como hacer un alias que apunta a la función de trabajo 'cl'. Ninguno de los cuales funcionó.
Lo que he leído en la documentación habla sobre el hecho de que 'cd' no se puede ejecutar como un comando externo (que es lo que entiendo que es la forma en que la función necesitaría usarlo).
Entonces, actualmente puedo usar mi comando "cl" y obtener lo que quiero, pero la pregunta es / sigue siendo:
¿Hay alguna forma de anular el comportamiento de 'cd' para que cambie al directorio solicitado y luego haga algo más después?