Question

J'écris un script shell qui doit cd à un endroit.Existe-t-il un moyen de revenir à l'emplacement précédent, c'est-à-dire à l'emplacement avant cd a été exécuté?

Était-ce utile?

La solution

vous pouvez simplement faire

cd -

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

Certaines coquilles vous permettent d'utiliser des commandes PushDir / PopDir, Consultez ce site .Vous pouvez également trouver ce donc question utile.

Autres conseils

Si vous exécutez à l'intérieur d'un script, vous pouvez également exécuter une partie du script à l'intérieur d'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 ses inconvénients ... Il isolait bien le répertoire, mais les sous-processus de frai peuvent être coûteux si vous le faites beaucoup.(EDIT: Comme @norman Grey souligne ci-dessous, la pénalité de performance du fraining Le sous-processus n'est probablement pas très coûteux par rapport à tout ce qui se passe dans le reste du script)

Par souci de maintenabilité, j'utilise généralement cette approche à moins que je puisse prouver que le script fonctionne lentement à cause de cela.

Vous pouvez echo pwd dans une variable et le CD de retour à cette variable.Il peut être plus calme.

Une autre alternative est un petit ensemble de fonctions que vous pouvez ajouter à votre .bstrucc qui vous permet de vous rendre à des annuaires 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 la navigation de répertoire , mais implique essentiellementEnregistrement de la sortie de "PWD" dans les mnémoniques nommées ("SPUD" et "Green") dans le cas ci-dessus, puis CD'ing sur le contenu des fichiers.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top