revenir à l'emplacement précédent après la commande 'cd'?

j'écris un script shell qui a besoin de cd à un endroit quelconque. Est-il possible de revenir à l'emplacement précédent, qui est, l'emplacement avant cd a été signé?

23
demandé sur Brian 2012-05-18 19:56:30

4 réponses

, Vous pouvez simplement faire

cd -

qui vous ramènera à votre emplacement précédent.

certains shells vous permettent d'utiliser les commandes pushdir/popdir, consultez ce site . Vous pouvez également trouver ce ainsi question utile.

45
répondu Levon 2017-03-20 10:04:24

si vous exécutez dans un script, vous pouvez également exécuter une partie du script dans un sous-processus, qui aura une valeur privée de $PWD.

# do some work in the base directory, eg. echoing $PWD
echo $PWD

# Run some other command inside subshell
( cd ./new_directory; echo $PWD )

# You are back in the original directory here:
echo $PWD

cela a ses avantages et inconvénients... il isole bien le répertoire, mais les sous-processus de reproduction peuvent être coûteux si vous le faites souvent. (EDIT: comme @Norman Gray le souligne ci - dessous, la pénalité de performance du frai du sous-processus n'est probablement pas très chère par rapport à tout le reste est qui se passe dans le reste du script )

pour des raisons de maintenabilité, j'utilise généralement cette approche à moins que je puisse prouver que le script tourne lentement à cause de cela.

4
répondu Barton Chittenden 2012-05-20 01:37:41

vous pouvez echo PWD dans une variable et le cd retour à cette variable. Il peut être plus calme.

1
répondu kalikid021 2012-05-18 16:05:49

une Autre alternative est un petit ensemble de fonctions que vous pouvez ajouter à votre .bashrc qui vous permettent d'aller dans les répertoires nommés:

# cd /some/horribly/long/path
# save spud
# cd /some/other/horrible/path
# save green
...
# go spud
/some/horribly/long/path

ceci est documenté à un outil de productivité de navigation de répertoire , mais implique essentiellement l'économie de la sortie de "pwd" dans le mnemonics nommé ("spud "et" vert") dans le cas ci-dessus, puis cd'ING au contenu des fichiers.

0
répondu Robert Krten 2014-02-03 13:47:19