Avec bash, existe-t-il un moyen d’afficher et de supprimer le répertoire de travail actuel? J'ai essayé d'écrire bash;cd dir; ./dostuff;exit;
mais le répertoire actuel est maintenant dir
.
Avec bash, existe-t-il un moyen d’afficher et de supprimer le répertoire de travail actuel? J'ai essayé d'écrire bash;cd dir; ./dostuff;exit;
mais le répertoire actuel est maintenant dir
.
Réponses:
Il y a pushd
etpopd
Bash gardera un historique des répertoires que vous visitez, il vous suffit de demander. Bash stocke l'historique dans une pile et utilise les commandes pushd et popd pour gérer la pile.
Exemple:
$ pwd; pushd /tmp; pwd; popd; pwd
/home/me
/tmp ~
/tmp
~
/home/me
L'appel bash
commence un nouveau sous-shell, qui a sa propre entrée; aucune des autres commandes ne s'exécutera jusqu'à ce qu'elle se termine. Le fait d'entourer les commandes à exécuter avec des parens démarrera également un nouveau sous-shell, mais les commandes qu'il contient seront exécutées.
( cd dir ; ./dostuff )
Si vous n'avez pas besoin de plusieurs niveaux d'historique de répertoires, vous pouvez également effectuer les tâches suivantes:
cd foo
# do your stuff in foo
cd -
Comparé à pushd
/ popd
, cela a pour inconvénient que si vous cd foo
échouez, vous vous retrouvez dans le mauvais répertoire avec cd -
.
(Probablement cd -
est plus pratique en dehors des scripts. "Revenons où je venais.")
J'utilise alias pour suivre les modifications de mon répertoire. Je peux donc "cd" quelque part, je peux simplement revenir à l'endroit où j'utilisais "cd.", Ou deux 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'
..cd
assez robuste? il semble que cela ne supprime que les 10 derniers éléments de la pile.
pushd Saves the current directory on the top of the directory stack and then cd to dir. With no arguments, pushd exchanges the top two directories.