Quando voglio fare un elenco up che usoVai alcune directory in Linux
cd ..
Ma quando voglio andare 7 directory fino Esiste un modo per fare questo diverso semplicemente digitando sette (7) volte cd ..
?
Quando voglio fare un elenco up che usoVai alcune directory in Linux
cd ..
Ma quando voglio andare 7 directory fino Esiste un modo per fare questo diverso semplicemente digitando sette (7) volte cd ..
?
cd ../../../../../../../
anche un altro suggerimento utile è di navigazione se per esempio diciamo che mantenere il passaggio da una directory (chiamarlo A) ad un altro (chiamalo B) che è 7 directory in su, nel tuo caso.
Quindi, se siete nella directory A:.
A> cd ../../../../../../../
B> // Now you're in directory B and want to go back to A
B> cd -
che si sposta a destra di nuovo alla directory A. -
espande alla directory precedente eri in
Il comando 'cd -' è interessante. Esiste un equivalente di Windows per lo stesso? – RBT
Sebbene questa sia la risposta "accettata", vedo che la risposta di @ dav sotto è la soluzione più solida. Una lunga lista di "../" è sia onerosa che incline all'errore. Se il tuo profilo consente uno script di alias, è più scalabile. La versione alias di bash conserva anche il supporto per "cd -". – ZaydH
si può fare in questo modo cd ../../../../../../../
C'è un cool article su alcuni hack è possibile applicare per migliorare voi la navigazione.
Hm, non credo.
Ma è possibile scrivere cd ../../../..
(e così via), invece di 7 volte cd ..
for i in {1..7}; do cd ..; done
è possibile utilizzare pushd .
per ricordare una directory e popd
per tornare ad essa.
Se c'è un comando che uso molto, farò semplicemente un alias.
È possibile digitare
alias ..='cd ..'
alias ...='cd ../..'
allora si può solo usare ..
andare un livello superiore e ...
andare due livelli fino.
Ecco un leggero miglioramento che ho trovato:
Di solito, quando si va indietro di un directory con cd .., si finisce per andare avanti di una directory dopo. Per fare questo lavoro, è necessario utilizzare le funzioni, piuttosto che gli alias, così invece di:
alias ..=”cd ../”
alias ..2=”cd ../../”
è possibile utilizzare:
..()
{
cd ../[email protected]
}
..2()
{
cd ../../[email protected]
}
Tuttavia, dopo aver utilizzato questo, diventa subito evidente che ti manca completamento del comando per questa funzione, rendendolo molto meno utile di quanto potrebbe essere. Così, sono tornato indietro e ho aggiunto le mie funzioni di completamento bash per questa funzione, che può essere incollata nel tuo ~/.bashrc o in qualsiasi file (es. ~/.bash_completion) chiamato dal tuo ~/.bashrc se vuoi evitare ingombrare. Ecco il codice di completamento:
_..()
{
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
Crea alias (in te ~ /.bashrc)
function cd_up() {
cd $(printf "%0.0s../" $(seq 1 $1));
}
alias 'cd..'='cd_up'
ed impiego:
$ cd.. 7
UPD: O fare variante più potente, cd per dir nome nel percorso corrente:
# 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..'
uso:
$ cd /home/user/documents/projects/reports/2014-10-01
$ cd.. proj
$ pwd
> /home/user/documents/projects
Si può provare questa soluzione. E 'il lavoro bene per me:
#!/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
ho fatto alias nel file ~/.barsh. E questo funziona bene per me.
Esempio, fino a tre cartelle.
$ cd `cde 3`
si potrebbe aggiungere la seguente funzione al .bashrc
:
# ~/.bashrc
up() {
for D in $(seq 1 $1);
do
cd ..
done
}
Quindi l'utilizzo sarebbe semplicemente:
user ~ $ up 3
user/$
Non ricordo da dove ho copiato questa funzione, ma funziona perfettamente per me (è possibile inserire il file .bashrc
ad esempio)
up() { local p= i=${1:-1}; while ((i--)); do p+=../; done; cd "$p$2" && pwd; }
ad es. per andare su 7 directory è necessario digitare up 7
Questa nifty funzione supporta la risalita in entrambe le direzioni.
Se siete in /a/b/c/d poi 'fino 1' vi porterà a /a/b/c, e così via. Quello è piuttosto standard e coperto nella maggior parte delle altre risposte.
Ora, per la parte speciale; l'uso di numeri negativi ti porta dall'altra direzione. Quindi, se ti trovi in /a/b/c/d, "su -1" ti porterà a /a e così via.
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
}
Disponibile per il download/installazione su github.
per gli utenti di pesce,
function cdd
for x in (seq $argv)
cd ..
end
end
e salvatelo sul vostro: ~/.config/pesce/funzioni/cdd.fish
e proprio $ cdd 3
Per salire 3 directory.
Ho modificato la funzione in modo che chiami solo una volta cd. Ciò mantiene la capacità di 'cd -' di tornare alla directory precedente. –
Su una nota a margine, per salire di un livello sia 'cd..' che' cd ..' sono equivalenti in windows ma linux è troppo rigido e rifiuta il comando 'cd..' come comando non valido solo a causa della mancanza di spazio . – RBT