Linux cd .. commande

9

Dites si je dois souvent faire ça:

cd ../../../../foo/sub1/bar/dest/
cd ../../../../foo2/sub1/bar/dest/
cd ../../../../foo3/sub1/bar/dest/
cd ../../../../foo/sub1/bar/dest/

Existe-t-il un moyen plus rapide de ne pas toujours taper ../../../../autant de fois? Des idées créatives?

Stan
la source
2
pourquoi ne pas simplement l'exécuter cd ../../../..et en finir avec cela?
Red Cricket
8
Vous pouvez apprécier pushdet popdou même cd -.
jscott
1
Si vous remontez aussi loin, il peut être judicieux de simplement cd / actual / path / you / want selon la profondeur des dossiers.
Drew Khoury
C'est beaucoup plus d'efforts qu'il n'en vaut la peine. Si vous vous déplacez entre les répertoires, la spécification du chemin complet ou simplement l'utilisation cd -( pour accéder au dernier répertoire ) est plus facile. Je le fais généralement alias h="history|grep"pour pouvoir utiliser les raccourcis d'entrée d'historique à la place. Quelque chose comme h foo3, suivi !450de répéter cette commande.
ewwhite
Ouvrez une autre fenêtre de terminal et ne tapez pas du tout cd ../../../ ..
Matt

Réponses:

18

La manière classique de procéder consiste à définir la CDPATHvariable. Dans votre cas, il peut être réglé sur .:../../../../ou .:/path/to/the/parent/of/foopour obtenir l'effet souhaité. Vous pouvez alors simplement faire cd foo/sub1/bar/destet arriver là où vous voulez.

L'avantage de ceci est que la complétion des onglets pour cdregarde également $CDPATHet fonctionnera comme par magie.

Dennis Kaarsemaker
la source
9

Vous pouvez utiliser le saut automatique qui apprend automatiquement à partir de la commande cd précédente et vous n'aurez qu'à spécifier la chaîne unique du chemin complet la prochaine fois. ex. j foo, j foo1, j foo2

pragnesh
la source
7

Vous pouvez créer des raccourcis pour ces commandes en ajoutant des alias dans le fichier de configuration bash (~ / .bashrc ou /etc/bash.bashrc)

alias cdd="cd ../../../../"

Ensuite, lorsque vous tapez, cddil exécutera cette commande.

Jason
la source
3
Oui, ou function cdd () { cd ../../../../$1/bar/dest ; }, alors vous pouvez simplement taper par exemple cdd foo, cdd foo2.
Andrew Schulman
0

J'ai récemment rencontré https://github.com/rupa/z , qui vous permet de passer à un répertoire récemment utilisé par regex. Vous pouvez donc faire quelque chose comme:

z foo3.*dest

au lieu de:

cd ../../../../foo3/sub1/bar/dest/

(tant que vous avez déjà visité ce répertoire, et rien de plus récent / fréquemment utilisé ne correspond à cette expression régulière)

rjmunro
la source