web-dev-qa-db-fra.com

Y a-t-il un moyen de retourner plusieurs fois sur CD à bash?

J'utilise souvent cd - Pour retourner là où j'étais. Comment puis-je faire cela plusieurs fois à Bash? Ou si ZSH ou un autre outil support-t-il?

60
timpone

Dans ZSH, il y a un auto_pushd option. Cette option fait cd se comporter comme pushd. Ensuite, vous pouvez simplement utiliser popd pour revenir à des annuaires précédents.

~ $ setopt auto_pushd
~ $ cd /
/ $ cd /var
/var $ cd /usr
/usr $ dirs
/usr /var / ~
/usr $ popd
/var $ popd
/ $ popd
~ $

Dans Bash, vous pouvez alias cd à pushd.

alias cd=pushd

L'un des inconvénients de ceci est que vous perdrez cd-trois drapeaux. À partir de l'entrée d'aide cd:

-L force des liens symboliques à suivre
[.____] - p utilise la structure du répertoire physique sans suivre des liens symboliques
[.____] - E Si l'option -p est fournie et que le répertoire de travail actuel ne peut pas être déterminé avec succès, quittez-le avec un statut non nul.

Si vous avez déjà besoin d'utiliser le réel cd intégré au lieu de l'alias, vous pouvez utiliser l'un d'entre eux:

  • 'cd' - citant la commande permet de ne pas résoudre l'alias et n'utilisez pas le CD normal.
  • \cd - Personnel des cimes du dos. Si vous citez un seul caractère d'un mot, la coquille traite le mot entier comme cité.
  • builtin cd - Cela indique directement à la coquille d'utiliser le bâtiment au lieu de l'alias.
53
user26112

Voici une solution rapide et sale pour les annuaires de signet et le sauter facilement:

$ a() { alias $1="cd $PWD"; }

Allez quelque part et tapez:

$ a 1

Vous avez maintenant une commande appelée 1 qui fait cd le répertoire actuel en ce moment. Plus tard, tapez juste:

$ 1

Et Presto, retour à ce répertoire. Je trouve cela très utile.

24
David Plumpton

bash

J'ai trouvé un script qui a résolu ce problème pour moi. Avec cela, vous pouvez taper cd -- Pour voir les 10 derniers répertoires que vous avez utilisés. Ça va chercher quelque chose comme ça:

0  ~/Documents/onedir
1  ~/Music/anotherdir
2  ~/Music/thirddir
3  ~/etc/etc

Aller à ~/Music/thirddir Juste Type cd -2

http://www.geocities.com/h2428/pettar/bash_acd.htm

zsh

oh-My-ZSH fournit une très belle fonctionnalité pour cela (au moins je pense que c'est Oh-My-ZSH qui l'établit).

Fondamentalement, d est aliasé à dirs -v | head -10

dirs est une commande intégrée ZSH et montre les derniers répertoires que vous avez allés.

Aussi, 1 est aliasé à cd -1 Et ainsi de suite pour tous les chiffres à 9.

En pratique, cela fonctionne comme ceci:

$ pwd
/home/me/Documents/gems/Java_regex/lib

$ d
0       ~/Documents/gems/Java_regex/lib
1       ~/Documents/gems/Java_regex
2       ~/Documents/gems
3       ~/Documents
4       ~

$ 2
~/Documents/gems

$ pwd
/home/me/Documents/gems
19
Dean

Vous pouvez utiliser le pushd _ intégré à BASH pour appuyer de nouveaux répertoires de travail sur la pile de répertoires. Utilisez popd pour les annuaires pop de la pile afin de revenir aux répertoires de travail précédents.

7
Thomas Nyman