Je suis en train de quelque chose ensemble sur un serveur je lance, chaque fois que je cd
enpublic_html
dossier 95% du temps, il y a quelques commandes que je vais toujours exécuter pour vérifier certaines choses.
Y a-t-il de toute façon je peux me connecter cd
donc si le répertoire est unpublic_html
, il exécutera automatiquement les commandes pour moi?
Si je ne peux pas me connecter au cd
commande, puis-je faire autre chose pour atteindre le résultat que je recherche?
J'utilise CentOS 5.8.
bash
shell
cd-command
TMH
la source
la source
echo "Testing..."
juste au-dessus de la sortie if, mais rien. Dois-je faire quelque chose pour appliquer ces modifications?. ~/.bash_profile
/bin/cd
dans mon CentOS, donc cette solution pourrait ne pas fonctionnercd -P public_html
oucd ~/public_html
ou avez un comportement inattendu si vous ne pouvez pascd
entrerpublic_html
.Avec
ksh
oubash
(ouzsh
):Avec
zsh
:(
chpwd
Est un crochet fonction qui est appelée chaque fois que le répertoire de travail courant change (par voie decd
,pushd
,popd
...)).la source
L'encapsulation
cd
, une commande existante, n'est pas recommandée.Une solution plus universelle consisterait à définir un
chpwd
crochet personnalisé dans Bash. (Selon les balises de cette question, je suppose que vous utilisez Bash)Il n'y a pas de système de crochets complet conçu dans Bash par rapport à d'autres coquilles modernes.
PROMPT_COMMAND
variable est utilisée comme une fonction de crochet, ce qui équivaut àprecmd
crochet dans ZSH,fish_prompt
dans Fish. Pour le moment, ZSH est le seul shell que j'ai connu à avoir unchpwd
crochet intégré.chpwd
Hook in BashUne astuce est fournie pour configurer un
chpwd
hook équivalent dans Bash basé surPROMPT_COMMAND
.Puisque nous détectons le
PWD
changement directement, la solution fonctionne aveccd
,pushd
etpopd
.Remarque : La principale différence entre notre
chpwd
implémentation dans Bash etchpwd
dans ZSH est qu'ellePROMPT_COMMAND
n'est pas prise en charge dans un shell Bash non interactif.Usage
Source: Créer un crochet équivalent chpwd dans Bash à partir de mon essentiel.
Pour tous ceux qui veulent une réponse pour ZSH. Utilisez le
chpwd
crochet dans ZSH. Ne définissez paschpwd()
directement la fonction. Plus de détails ici .la source
Je ne suis pas un expert bash mais je prendrais la réponse de @ UVV et la modifierais un peu pour qu'elle fasse ceci:
public_html
, je vérifie simplement unhook-script
fichier dans le répertoire cible$1
, par exemplecd_hook.sh
.hook-script
existe, exécutez-le et passez à lacd
Cela semble plus générique car vous seriez alors en mesure d'appliquer le
cd
crochet à n'importe quel répertoire si vous le souhaitez, en ajoutant simplement uncd_hook.sh
dans ledit répertoire.la source
cd
quelque part, recherchez un.bashcd
fichier et exécutez-le s'il existe.Utiliser une approche zsh puissante dans bash:
Tout d'abord, un moyen simple d'étendre bash:
~ / .runscripts
Inclure dans .bashrc:
Vous pouvez créer ~ / .bashrc.d / cdhook avec:
A vous maintenant de remplacer la fonction:
la source