Avec bash, existe-t-il un moyen de pousser et d'ouvrir le répertoire de travail actuel ? J'ai essayé d'écrire bash;cd dir; ./dostuff;exit;
mais le répertoire courant est maintenant dir
.
Réponses
Trop de publicités?Appel à bash
démarre un nouveau sous-shell, qui a sa propre entrée ; aucune des autres commandes ne sera exécutée jusqu'à ce qu'il se termine. Si vous entourez les commandes à exécuter par des parenthèses, un nouveau sous-shell sera également lancé, mais il exécutera les commandes qui s'y trouvent.
( cd dir ; ./dostuff )
Si vous n'avez pas besoin de plusieurs niveaux d'historique de l'annuaire, vous pouvez également le faire :
cd foo
# do your stuff in foo
cd -
Par rapport à pushd
/ popd
ce qui présente l'inconvénient que si cd foo
échoue, vous vous retrouvez dans le mauvais répertoire avec cd -
.
(Probablement cd -
est plus pratique en dehors des scripts. "Retournons là où je viens d'être.")
J'utilise des alias pour garder la trace de mes changements de répertoire, de sorte que pour 'cd' quelque part, je peux simplement revenir là où j'étais en utilisant 'cd.', ou revenir deux fois en arrière en utilisant 'cd ', etc.. ;
alias pushdd="pushd \$PWD > /dev/null"
alias cd='pushdd;cd'
alias ssh='ssh -A'
alias soc='source ~/.bashrc'
#below to go back to a previous directory (or more)
alias popdd='popd >/dev/null'
alias cd.='popdd'
alias cd..='popdd;popdd'
alias cd...='popdd;popdd;popdd'
alias cd....='popdd;popdd;popdd;popdd'
#below to remove directories from the stack only (do not 'cd' anywhere)
alias .cd='popd -n +0'
alias ..cd='popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0'