Comment accéder au répertoire de travail précédent dans le terminal?

213

Dans le terminal, comment puis-je définir une clé pour accéder au répertoire précédent dans lequel je me trouvais lors du changement de répertoire avec la cdcommande?

Par exemple, je suis dans /opt/soft/binet je cddans /etc/squid3et je veux revenir au premier répertoire.

Hojat Taheri
la source

Réponses:

284

Vous pouvez utiliser

cd -

ou vous pouvez utiliser

cd $OLDPWD
Raphael Ahrens
la source
3
Avez-vous une idée de la raison pour laquelle le nom du répertoire est imprimé sur la console lorsque vous utilisez "cd -"?
dtmland
4
Probablement, puisque les anciens shells n’ont pas affiché le nom du répertoire actuel dans l’invite, il était utile de voir le nom du répertoire lorsque vous avez tapé cd -. Par exemple, lorsque vous tapez, cd /usr/localvous savez que vous vous trouvez /usr/loal, mais lorsque vous tapez, cd -vous ne vous souvenez pas toujours de quel répertoire vous venez. Donc, cela vous évite de taper cd -; pwd. Mais tout cela n'est que spéculation.
Raphael Ahrens
2
Vous pouvez aussi utiliser un alias: Définissez alias comme suit, alias -- -='cd -'puis utilisez -(1 caractère) au lieu de cd -(4 caractères). Plus rapide:D
ADTC
2
Comment pourrais-je vivre sans cela?
VSZM
1
@ AndréKuhlmann Vous pouvez faire cd -deux fois. Vous cd /; cd /usr; cd -; cd -devriez être dans /usr. Mais j'ai peut-être mal compris votre question.
Raphael Ahrens le
54

Les autres réponses sont certainement complètes dans le sens de la réponse directe. cd -et cd $OLDPWDsont certainement les choix principaux pour cela. Cependant, je trouve souvent que d' entrer dans un flux de travail pushdet popdfonctionne mieux.

En bref, si vous vous déplacez dans un répertoire dans le but ultime de revenir à votre point de départ, utilisez pushd/ popd.

Exemple étendu

La différence majeure est facilement montrée par un exemple.

$ cd dir1
$ pushd dir2

À ce stade, vous avez une pile de répertoires dir2, dir1. Courir pushdsans arguments vous ramènera à dir1la pile maintenant dir1, dir2. popdferait la même chose, mais vous laisserait avec une pile de répertoires vide. Ce n’est pas très différent de ce que vous auriez vécu avec le cd -flux de travail.

Cependant, vous pouvez maintenant changer de répertoire plusieurs fois et y revenir dir1. Par exemple,

$ cd dir1
$ pushd dir2
$ cd dir3

Si vous courez popdà ce stade, vous retournerez à dir1.

Josh Berry
la source
2
Vous pouvez également empiler des répertoires. Vous devez donc utiliser plusieurs fois pushdet revenir au dossier précédent pendant l’ popdaffichage.
Bernhard
1
Certainement. J'ai presque donné un exemple volumineux qui incluait la vérification de la pile dirs -v, mais la réalité est que, souvent, le cas le plus simple est tout ce que j'utilise vraiment. (Ou pire, je fais une erreur en essayant push +2ou similaire) En outre, je pensais que bébé ferait des démarches pour que quelqu'un essaye le flux de travail. :)
Josh Berry
Comment allez-vous cdau sommet de la pile sans éclater?
Jon Deaton
18

Tu devrais utiliser:

cd ~-

il fait la même chose que cd -(de la réponse actuellement acceptée) sans l'écho gênant du répertoire et est plus facile à taper que cd "$OLDPWD"ou cd - > /dev/null.

Anthon
la source
2
Redirection de l'écho vers un fichier null! C'est du génie !!
Ram
2
L'écho montre le nouveau répertoire et non le précédent. Et je le trouverais utile, pour que je sache où je suis maintenant, surtout si je suis dans un shell qui ne montre que le nom du répertoire actuel (ou rien du tout) à l’invite, et que je suis trop indifférent pour changer le invite pour montrer le chemin complet. Bien sûr, si votre invite indique déjà le chemin complet, l’écho sera redondant et gênant. Dans ce cas, je pense que vous pouvez essayer d' alias -- -='cd "$OLDPWD"'utiliser ensuite -(1 caractère) au lieu de cd ~-(5 caractères). :)
ADTC le
Source et explication: unix.stackexchange.com/a/330885/38213 Spoilers, - est un opérande et ~ est un alias de chemin. Alors ça cd ~-/..marche mais cd -/..ça ne marche pas!
Ray Foss
16
$ cd - 

passera au répertoire de travail précédent.

mezi
la source
3

Vous pouvez "définir une clé" pour 'cd -' en modifiant votre fichier '~ / .bashrc' et en incluant un alias pour la commande. Par exemple, vous pouvez ajouter "cdc" pour le rendre "cd -", ce qui vous fournirait un moyen plus rapide d'accéder au dernier répertoire en ajoutant:

alias cdc='cd -'

De cette façon, vous taperiez simplement 'cdc' et cela vous placerait dans votre dernier répertoire de travail.

Atari911
la source
5
Et vous confondez sans fin lorsque vous utilisez un système où cet alias n'est pas en place. Cela évite de taper un caractère de temps en temps. Pourquoi même déranger?
un CVn
2
"En terminal, comment définir une clé pour accéder au répertoire précédent" Je ne me trompe jamais. C'est juste un raccourci, quand vous êtes sur un autre système, utilisez simplement le mode long.
Atari911
@ Atari911 excellente question! voici la réponse: stackoverflow.com/questions/4200800 Voici ce que j'ai fait (lié à F12): bind '"\e[24~":"\C-k \C-ucd -\n"'(ou plus préférablement déplacez-le dans le inputrcfichier comme indiqué dans la réponse).
ADTC le
1

cd ..va au dossier précédent dans l'arborescence du dossier.
cd -va dans le dossier qu'il était avant. Cette commande ne fonctionne pas sur certaines distributions (Ubuntu 16.04), fonctionne dans debian 9.

Scorpion
la source