59 votes

Utilisation de cd pour remonter plusieurs niveaux de répertoire

J'ai affaire à des projets Java qui aboutissent souvent à des dossiers profondément imbriqués (/path/to/project/com/java/lang/whatever, etc) et je veux parfois pouvoir sauter, disons, 4 niveaux de répertoire vers le haut. Taper cd ../../../ est pénible, et je ne veux pas faire de lien symbolique. Existe-t-il une option de cd qui permette de remonter plusieurs niveaux de répertoires (dans ma tête, ce serait quelque chose comme cd -u 4) ? Malheureusement, je n'arrive pas à trouver de page de manuel pour cd spécifiquement, à la place, j'obtiens juste la page inutile "builtins".

46voto

Grigory K Points 521

Une fonction simple, avec un alias :

function cd_up() {
  cd $(printf "%0.s../" $(seq 1 $1 ));
}
alias 'cd..'='cd_up'

(Vous pouvez définir ceci dans ~/.bashrc si vous le souhaitez dans tous les cas).

Il est simple à utiliser :

$ cd.. 10

37voto

Konrad Points 11

Ou... essayez ceci : (yay Google)

Naviguez dans le répertoire en utilisant ..n :

Dans l'exemple ci-dessous, ..4 est utilisé pour monter de 4 niveaux de répertoire, ..3 pour monter de 3 niveaux de répertoire. pour monter de 3 niveaux de répertoires, ..2 pour monter de 2 niveaux de répertoires.

Ajoutez l'alias suivant au fichier .bash_profile et reconnectez-vous.

alias ..="cd "

alias ..2="cd ../ "

alias ..3="cd ../../ "

(etc.)

Véase Hack #2

21voto

Bethor Points 2997

Une solution simple et peu technique qui ne nécessite aucune installation. Ne fonctionne que dans les coquilles avec bash -Cependant, il est possible d'éditer des commandes à la manière d'une machine à écrire.

  • Tipo cd ..
  • Presse Up-arrow Return autant de fois que nécessaire. Très rapide si vous utilisez deux doigts.

10voto

Animikh_Aich Points 101

Il s'avère que la bonne réponse est "cd +n", où n est le nombre de niveaux que vous voulez monter. Dommage que cela ne soit documenté nulle part !

7voto

Jeffery To Points 9225

Vous pourriez écrire une fonction (il doit s'agir d'une fonction, car vous souhaitez modifier 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 remontera un certain nombre de niveaux passés en argument (par défaut 1) dans la fonction physique (donc, comme cd -P .. , n fois) :

up() {
    # default parameter to 1 if non provided
    declare -i d=${@:-1}
    # ensure given parameter is non-negative. Print error and return if it is
    (( $d < 0 )) && (>&2 echo "up: Error: negative value provided") && return 1;
    # remove last d directories from pwd, append "/" in case result is empty
    cd "$(pwd | sed -E 's;(/[^/]*){0,'$d'}$;;')/";
}

Utilisez-le comme suit :

up 4

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X