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.
$ 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>