Quand je veux aller d'un répertoire, j'utilise
cd ..
Mais quand je veux aller 7 répertoires vers le haut, y at-il un moyen de faire cela autre que de taper sept (7) fois cd ..
?
cd ../../../../../../../
Un autre conseil de navigation utile est par exemple si, par exemple, vous laissez passer sans cesse d'un répertoire (appelez-le A) à un autre (appelez-le B) comportant 7 répertoires en place, dans votre cas.
Donc si vous êtes dans le répertoire A:
A> cd ../../../../../../../
B> // Now you're in directory B and want to go back to A
B> cd -
Cela vous ramènera directement au répertoire A. -
se développera au répertoire précédent dans lequel vous vous trouviez.
Faire un alias (dans vous ~/.bashrc)
function cd_up() {
cd $(printf "%0.0s../" $(seq 1 $1));
}
alias 'cd..'='cd_up'
et utilise:
$ cd.. 7
UPD: Ou créer une variante plus puissante, cd au nom du répertoire dans le chemin actuel:
# cd up to n dirs
# using: cd.. 10 cd.. dir
function cd_up() {
case $1 in
*[!0-9]*) # if no a number
cd $( pwd | sed -r "s|(.*/$1[^/]*/).*|\1|" ) # search dir_name in current path, if found - cd to it
;; # if not found - not cd
*)
cd $(printf "%0.0s../" $(seq 1 $1)); # cd ../../../../ (N dirs)
;;
esac
}
alias 'cd..'='cd_up' # can not name function 'cd..'
utilisation:
$ cd /home/user/documents/projects/reports/2014-10-01
$ cd.. doc
$ pwd
> /home/user/documents
vous pouvez utiliser pushd .
pour mémoriser un répertoire et popd
pour y revenir.
S'il y a une commande que j'utilise beaucoup, je vais juste faire un alias.
Vous pouvez taper
alias ..='cd ..'
alias ...='cd ../..'
Ensuite, vous pouvez simplement utiliser ..
pour monter d'un niveau et ...
pour en monter deux.
Voici une légère amélioration que j'ai trouvée:
Habituellement, lorsque vous revenez dans un répertoire avec cd .., vous finissez par parcourir un répertoire après. Pour que cela fonctionne, vous devez utiliser des fonctions plutôt que des alias, donc au lieu de:
alias ..=”cd ../”
alias ..2=”cd ../../”
vous pouvez utiliser:
..()
{
cd ../$@
}
..2()
{
cd ../../$@
}
Cependant, après avoir utilisé cela, il devient rapidement évident que vous manquez la complétion de commande pour cette fonction, ce qui la rend beaucoup moins utile qu'elle pourrait l'être. Ainsi, je suis retourné et j'ai ajouté mes propres fonctions d'achèvement de bash pour cette fonction, qui peuvent être collées dans votre ~/.bashrc ou n'importe quel fichier (par exemple, ~/.bash_completion) appelé depuis votre ~/.bashrc si vous souhaitez éviter désordre. Voici le code d'achèvement:
_..()
{
local cur=../${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -d — $cur) )
local i=${#COMPREPLY[*]}
while [ $((--i)) -ge 0 ]; do
COMPREPLY[$i]=$(echo ${COMPREPLY[$i]} | sed -r ‘s/(\.\.\/)*//’)
done
}
complete -F _.. -o nospace -S / ..
_..2()
{
local cur=../../${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -d — $cur) )
local i=${#COMPREPLY[*]}
while [ $((--i)) -ge 0 ]; do
COMPREPLY[$i]=$(echo ${COMPREPLY[$i]} | sed -r ‘s/(\.\.\/)*//’)
done
}
complete -F _..2 -o nospace -S / ..2
Vous pouvez le faire comme ceci cd ../../../../../../../
Il existe un article cool sur certains hacks que vous pouvez appliquer pour améliorer votre navigation.
for i in {1..7}; do cd ..; done
Vous pouvez ajouter la fonction suivante à votre .bashrc
:
# ~/.bashrc
up() {
for D in $(seq 1 $1);
do
cd ..
done
}
Donc, l'utilisation serait simplement:
user ~ $ up 3
user / $
Cette fonction astucieuse permet de monter dans les deux sens.
Si vous êtes dans / a/b/c/d, alors «up 1» vous mènera à / a/b/c, etc. C'est assez standard et couvert dans la plupart des autres réponses.
Maintenant, pour la partie spéciale; utiliser des nombres négatifs vous fait monter de l’autre direction. Donc, si vous êtes dans / a/b/c/d, 'up -1' vous mènera à / a, etc.
function up() {
UP=$1
if [[ $UP =~ ^[\-0-9]+$ ]]; then
if ((UP<0)); then
UP=${UP#-}
cd $(echo $PWD | cut -d/ -f1-$((UP+1)))
else
cd $(printf "%0.s../" $(seq 1 ${UP}));
fi
fi
}
Disponible pour téléchargement/installation sur github .
Hm, je ne pense pas.
Mais vous pouvez écrire cd ../../../..
(et ainsi de suite) au lieu de 7 fois cd ..
pour les utilisateurs de poisson,
function cdd
for x in (seq $argv)
cd ..
end
end
et enregistrez-le sur votre: ~/.config/fish/functions/cdd.fish
et juste $ cdd 3
Pour monter 3 répertoires.
Vous pouvez essayer cette solution. C'est bon pour moi:
#!/bin/bash
#this sctipt should take one parameter - number of steps. And do "cd" command step times.
# example usage: cd `cde 3`
NEW_PATH=$(pwd)
step="../"
upper=""
for i in seq $1
do
upper="$upper$step"
done
echo $upper
J'ai créé un alias dans le fichier ~/.barsh. Et cela fonctionne bien pour moi.
Exemple, pour trois dossiers.
$ cd `cde 3`