Revenez à l'location du directory avant de l'save dans le directory personnel

Comme on le sait, cd sans argument change le directory actuel de son directory personnel. Je me request s'il n'y a pas moyen, après avoir utilisé la command cd comme celle-ci, de returnner à l'location du directory avant de lancer cd ?

En généralisant, y a-t-il un moyen de revenir à un directory précédent après que l'on a cd à un autre directory? Il semble très possible que la réponse à ces deux questions soit la même, mais au cas où ce n'est pas le cas, je les garderai toutes deux séparées, parce que la première question est la principale question à laquelle je voudrais répondre.

Oui:

 cd - 

ou

 cd "$OLDPWD" 

(Vous pouvez omettre les guillemets si le nom du directory ne contient aucun caractère d'espace ou de caractère générique).

Ils fonctionnent dans tous les shell POSIX (bash, ksh, zsh, …). cd - travaille également dans tcsh et le poisson.

J'utilise souvent pushd et popd pour éviter ce problème.

Exemple

 $ pwd /home/saml/tst/134317 $ ls -l total 12 drwxrwxr-x. 2 saml saml 4096 Jun 3 16:05 dir1 drwxrwxr-x. 2 saml saml 4096 Jun 3 16:05 dir2 drwxrwxr-x. 2 saml saml 4096 Jun 3 16:05 dir3 

Maintenant, allons à dir1 .

 $ pushd dir1 ~/tst/134317/dir1 ~/tst/134317 $ pwd /home/saml/tst/134317/dir1 

Et à dir2 :

 $ pushd ../dir2/ ~/tst/134317/dir2 ~/tst/134317/dir1 ~/tst/134317 $ pwd /home/saml/tst/134317/dir2 

Maintenant, revenons à l'endroit où nous venons de venir:

 $ popd ~/tst/134317/dir1 ~/tst/134317 $ pwd /home/saml/tst/134317/dir1 

Vous pouvez voir quels directorys sont sur votre stack avec la command dirs :

 $ dirs ~/tst/134317/dir1 ~/tst/134317 

Le directory dans lequel vous vous trouvez est le directory le plus à gauche.

 ~/tst/134317/dir1 

Le directory que nous allons "pop" est le directory à côté de celui-ci à droite.

 ~/tst/134317 

Il continue à «pousser» les directorys sur le côté gauche lorsque vous les ajoutez, et les «pop» à partir du côté gauche.

Avec bash, une alternative à "cd -" pourrait être pushd / popd, cela permet de travailler avec une stack de directorys:

 cd <path1> => move to <path1> pushd <path2> => move to <path2> pushd <path3> => move to <path3> ... popd => return to <path2> popd => return to <path1>