100 votes

push/pop répertoire actuel ?

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 .

128voto

user2013 Points 2301

Il y a pushd y popd

Bash conserve un historique des répertoires que vous visitez, il suffit de le demander. Bash stocke l'historique dans une pile et utilise les commandes pushd et popd pour gérer la pile.

Plus à lire

Exemple :

$ pwd; pushd /tmp; pwd; popd; pwd
/home/me
/tmp ~
/tmp
~
/home/me

36voto

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 )

14voto

tuomassalo Points 443

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.")

6voto

cdp Points 61

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'

1voto

jasonleonhard Points 189

pushd ajouter à une pile de répertoires

popd supprimer d'une pile de répertoires

dirs voir la pile de répertoires

dirs -p "afficher les entrées du répertoire une par ligne"

dirs -c "effacer la pile de répertoire"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X