À peu près à chaque fois que je «cd» vers un répertoire différent sur ma machine (dans ce cas, exécutant Mac OS X 10.6.7) via la ligne de commande (qui est bash), je tape immédiatement «ls» pour obtenir la liste des contenus dans ce répertoire. J'essaie de trouver un moyen de remplacer 'cd' afin qu'il change dans le répertoire demandé et me donne ensuite la liste en une seule fois.
J'ai pu obtenir les fonctionnalités de base que je cherche à travailler avec la ligne suivante ajoutée à mon ~ / .bash_profile
function cl() { cd "$@"; ls -l; }
Cela fonctionne comme prévu. Passer au répertoire demandé puis me montrer le contenu. Là où je rencontre un problème, j'essaie de remplacer "cd" lui-même au lieu de créer une nouvelle commande "cl".
Les choses suivantes ne fonctionnent pas
##### 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;
J'ai également essayé plusieurs autres itérations qui ne sont pas répertoriées ainsi que la création d'un alias qui pointe vers la fonction «cl» de travail. Rien de tout cela n'a fonctionné.
Ce que j'ai lu dans la documentation parle du fait que 'cd' ne peut pas être exécuté comme une commande externe (c'est ce que je comprends être la façon dont la fonction devrait l'utiliser).
Donc, je peux actuellement utiliser ma commande "cl" et obtenir ce que je veux, mais la question est / reste:
Existe-t-il un moyen de remplacer le comportement de 'cd' pour qu'il change dans le répertoire demandé et fasse ensuite autre chose?