Je suis un peu nouveau à Linux et j'apprends simplement à rendre l'ordinateur faire le travail que je veux.
Donc, mon souhait est que chaque fois que j'utilise le CD C'est ce que j'ai fait jusqu'à présent. P> code>
Commande, je souhaite qu'il modifie le répertoire, puis répertoriez tous les fichiers présents dans ceux-ci. S'il n'y a pas d'arguments passés, je veux que la commande
pwd code> à exécuter. P>
function cd {
if [ $# -eq 0 ]
then
pwd
else
cd "$1"; ls -l
fi
}
4 Réponses :
Vous appelez récursivement votre fonction au lieu d'appeler le in zsh La commande ceci s'applique également à bash. P> in Bash, vous pouvez utiliser la commande uniquement à bash strong> p> CD code> intégré.
intégrée code> peut être utilisée pour exécuter une recherche de fonction de coquille intégrée explicitement. C'est exactement ce que vous devez implémenter une fonction qui a le même nom qu'un shell intégré p>
Concernant la commande
code> intégrée h2>
code> intégrée pour exécuter une commande externe ou une intégrée. C'est ici que Bash est différent de ZSH comme dans la commande ZSH
code> exécute uniquement les commandes externes. P>
CD de commande code> fonctionne la même chose que
CD intégré code> (en supposant
/ bin / cd code> n'existe pas) p>
CD de commande code> échouerait probablement avec
CD: Commande non trouvée code> sauf si
/ bin / cd code> existe p> p>
S'il existe, chpwd_functions code> est une matrice de noms de fonction, chacun d'entre eux étant appelé, dans l'ordre, chaque fois que le répertoire de travail change. Dans votre cas, il pourrait être utilisé comme suit:
foo () {
if [[ $PWD == $HOME ]]; then
pwd
else
ls -l
fi
}
chpwd_functions+=(foo)
La commande "CD" dans Bash peut prendre des options, il suffit d'utiliser seulement 1 $ 1 déposera le nom du répertoire. Cela passe tout:
J'avais un problème similaire ayant changé de bash à ZSH. Exemple de fonction ... La solution pour moi était 1. préfixe ma fonction avec fonction code> et 2. remplacer la commande
code> avec code> avec < Code> intégré code> p>