J'ai affaire à des projets java qui aboutissent souvent à des dossiers profondément imbriqués (/ chemin / vers / projet / com / java / lang / peu importe, etc.) et veulent parfois pouvoir sauter, disons, 4 niveaux de répertoire vers le haut. Taper cd ../../../ .. est pénible et je ne veux pas créer de lien symbolique. Y a-t-il un drapeau sur cd qui vous permet de monter plusieurs niveaux de répertoire (dans ma tête, ce serait quelque chose comme cd -u 4)? Malheureusement, je ne trouve aucune page de manuel pour le cd en particulier, au lieu d'obtenir simplement la page inutile "intégrée".
linux
command-line
Tossrock
la source
la source
cd ...
où le nombre de '.' serait le nombre de niveaux à monter. Est-ce que cela provoquerait un conflit dont je ne suis pas au courant?zsh
etOh My Zsh
qui est une meilleure alternative àbash
, puis vous pouvez simplement fairecd ...
(plusieurs points) comme il se doitRéponses:
Ou ... essayez ceci: (yay Google)
Voir Hack # 2
la source
..
,...
et....
comme ils sont plus rapides à taper, mais le principe des alias est le même bien sûr.cd ...
,cd ....
etc. C'était très pratique.Une fonction simple, avec un alias aussi:
(Vous pouvez le définir
~/.bashrc
si vous le souhaitez dans chaque cas).C'est simple à utiliser:
la source
eval $(printf "cd ..;%.s" $(seq $1))
lesquellescd
plusieurs fois, car~-
aka$OLDPWD
est défini dans le répertoire de travail avant l'invocation, plutôt que dans un répertoire intermédiaire. PS - cela se simplifiecd $(printf %.s../ $(seq "$1"))
si vous le souhaitez.Une solution simple et low-tech qui ne nécessite aucune configuration. Ne fonctionne que dans les shells avec l'
bash
édition de commande -style, cependant.cd ..
la source
Il s'avère que la bonne réponse est «cd + n», où n est le nombre de niveaux que vous souhaitez augmenter. Dommage que cela ne soit documenté nulle part!
la source
dirs
qui prend [+ n] comme argument et affiche le nième répertoire unique qui a été ajouté viapushd
. Si vousalias
cd
àpushd
, vous pouvez l' utiliser. Cependant, notez que ce n'est pas techniquement une réponse à la question du PO, car cela a à voir avec des répertoires uniques , ce qui signifie que l'ordre est gâché au fil du temps, lorsque vous revenez aux mêmes répertoires.pushd
etpopd
prenez également une option [+ n], c'est pourquoi cela peut fonctionner. De plus, bien que ce soit imparfait et indirect, je suppose que cela peut être utilisé comme réponse à la question. Souvent, vous avez récemment visité les répertoires ci-dessus, ils figureront donc dans les 10 derniers répertoires stockés par la pile de répertoires.Vous pouvez écrire une fonction (ce doit être une fonction, car vous voulez changer l'état de votre shell lui-même, à savoir le répertoire de travail; une commande externe n'affecterait que son propre processus).
Voici une fonction qui montera un certain nombre de niveaux passés en argument (par défaut 1) dans la structure du répertoire physique (donc, comme
cd -P ..
, n fois):Utilisez-le comme ceci:
la source
up 4
vraiment équivalent àcd /some/dir/
supposer$PWD = "/some/dir/that/is/deeply/nested/"
?Pas exactement ce que vous demandez mais vous devriez regarder dans
pushd
etpopd
. Je les trouve beaucoup plus utiles pour la navigation dans les dossiers que certainscd...
aliasSi vous allez et vient à partir de quelques zones fixes, la chose habituelle est d'avoir des alias.
la source
Au lieu d'utiliser des alias, vous pouvez également utiliser la fonction bash suivante:
(ou en tant que one-liner:
function mcd() { up=""; for ((i=1; i<=$1;i++)); do up="${up}../"; done; cd $up; }
)L'ajout de cela à votre
~/.bashrc
fichier le rendra disponible dans votre terminal et la construction d'une chaîne../../../../../../
avant l'appelcd
permettra également decd -
revenir au répertoire de départ.Une implémentation plus utile pourrait également contenir des vérifications d'entrée utilisateur:
la source
Connaissez-vous le saut automatique ? C'est un hack tiers, mais peut être utile dans votre scénario.
la source
Essayez le paramètre d'environnement rarement utilisé
CDPATH
. Il se peut alors que vous n'ayez pas à définir explicitement le niveau.Exemple:
Si vous travaillez sur plusieurs projets, vous pouvez définir le paramètre CDPATH dans un fichier d'environnement spécifique au projet. Et déclenchez-le avec une cale pour une automatisation supplémentaire.
J'ai tendance à utiliser beaucoup pushd et popd. J'ai tendance à utiliser CDPATH pour me laisser passer entre les arborescences de projets plutôt que les sous-répertoires dans un projet - mais en ce moment je travaille sur beaucoup de petits projets, pas quelques gros projets. :)
la source
Si vous êtes précédemment sur le répertoire cible:
la source
Jetez un oeil à DirB . Il s'agit d'un script BASH qui vous permet de créer des signets comme suit:
OPERATIONS
Très simple, très efficace.
la source
Allez plus loin dans la réponse de @ Grigory:
C'est :
la source
Je suis tombé malade de ce même problème et j'ai fini par écrire cd-plus . Un utilitaire CLI à fichier unique qui vous permet de monter plusieurs répertoires.
Usage
la source
L'ajout du code ci-dessous à votre
.bashrc
extension étendracd
l'achèvement pour honorer la notation à trois points.Une fois que cet extrait est exécuté dans votre shell bash, taper
cd .../
et frapper<TAB>
complètera le chemin d'accès../../
et listera les chemins relatifs de tous les répertoires qui sont à deux niveaux, par exemple.Mise à jour :
bash-completion
doit être installé pour avoir accès à la_cd
méthode référencée dans le code ci-dessus. Il est installable via la plupart des gestionnaires de packages de ligne de commandela source