2009-12-09 14 views
9

in generale usiamocambiare alla directory principale in unix

cd .. per andare alla directory padre

cd ../../ per andare alla directory genitore genitori. e

cd ../../../../../ per la quinta directory principale.

c'è qualche modo semplificato per farlo?

shell sto usando è ksh.

+0

È possibile interrompere la barra alla fine. Inoltre, la risposta alla tua domanda può dipendere da quale shell. –

+0

Alcune scorciatoie: 'cd -' ti riporta indietro da dove sei appena arrivato. 'cd ~' ti porta nella tua home directory. – Asaph

+0

Puoi eseguire il checkout del nuovo comando ''bd'': vedi [la mia risposta sotto] (http://stackoverflow.com/a/18694331/6309) – VonC

risposta

6

Questa funzione è per Bash, ma qualcosa di simile potrebbe essere fatto per gli altri (questo può funzionare così com'è in ksh e zsh): utilizzo

cdn() { pushd .; for ((i=1; i<=$1; i++)); do cd ..; done; pwd; } 

Esempio:

/some/dirs/and/subdirs$ cdn 3 
/some/dirs/and/subdirs /some/dirs/and/subdirs 
/some 
/some$ popd 
/some/dirs/and/subdirs$ 
+0

accetto questo dato che sembra che non abbiamo una linea di comando diretta corta taglio per questo.still spero che ci sia un modo per farlo in breve sulla riga di comando. – Vijay

0

Se non ti piace digitare o ricordare i nomi dei file, puoi navigare tra le directory con qualcosa come NerdTree?

0

È possibile definire alias per semplificare questo tipo di operazione cd.

Nota che sarebbe stato facile fare errori con un alias in termini di ../../../.. ecc, perché si dovrebbe essere molto sicuro del rapporto tra la directory corrente e dove si voleva essere.

Meglio usare percorsi assoluti con alias

0

e ho pensato che ero pigro ...

Molto tempo fa, mi sono stancato di digitare cd .. così, dal momento che circa 1988 uno dei miei alias standard (e in batch file per MSDOS/Windows) è up. Forse dovrei estendere il concetto:

alias up='cd ..' 
alias up2='cd ../..' 
alias up3='cd ../../..' 
alias up4='cd ../../../..' 
alias up5='cd ../../../../..' 
alias up6='cd ../../../../../..' 
0

uso cd / per andare alla radice di voi filesystem, e cd ~ per andare a casa directory.
Esempio: per andare a te regista basta fare cd /var/log.

0

Per Bourne conchiglie -tipo (tra cui ksh), si potrebbe scrivere una funzione di shell:

cdup() { 
    set -- "${1-1}" 
    while test "$1" -gt 0; do 
     cd .. 
     set -- "$(($1-1))" 
    done 
} 
2

Hai bisogno di essere c Sei consapevole se imposti degli alias come questo. Quando vai a cd ../../../../.. non vai sempre su 5 directory. Se ci sono solo 2 o 3 directory da/finirai in /. Prova questo per te.

$ cd ~ 
$ pwd 
/home/you 
$ cd ../../../.. 
$ pwd 
/

Ciò accade perché la directory padre di/è in effetti /.

+1

questo non può essere considerato come risposta, piuttosto dovrebbe essere un commento. – Vijay

+1

Come suggeriresti un "commento" cautelativo come questo da scrivere? Sembrava meritasse spazio verticale per chiarezza. A volte la vera risposta a una domanda è capire che potresti non voler fare le cose come prima pensavi di voler fare le cose. Spero che sappiate che il vostro 'cdn 5' potrebbe essere solo un 'cdn 1' potrebbe farvi risparmiare più di pochi punti. – istruble

0

Questo è generalmente il modo in cui lo faccio. Ovviamente in ksh potresti avere i tuoi tasti di navigazione impostati su qualcos'altro. Quando ho usato ksh, li ho usati per impostarli in stile vi in ​​modo che fosse k anziché freccia su.

Negli script di shell è meglio essere espliciti. Se è possibile utilizzare un percorso assoluto poi farlo ed eseguire un comando come:

cd /webdata/cgi-bin 

Se lo script può essere eseguito ad agire sui file in directory diverse, allora si potrebbe prendere in considerazione qualcosa di simile:

TOPDIR="/webdata" 
cd $TOPDIR/cgi-bin 

Ma se davvero non si può fare entrambe le cose quindi attenersi ad .. catene come così:

chmod +x *.py 
cd ../../../cgi-bin 

Questo è abbastanza chiaro. Esegui un'azione nella directory di lavoro corrente, quindi naviga su 3 livelli e seleziona la directory cgi-bin. Chiunque sia in grado di capire quello che stai facendo nello script della shell non dovrebbe avere difficoltà a seguirlo. Se lo script è davvero complessa, allora sarebbe d'aiuto per aggiungere alcuni commenti come questo:

# change to TOPDIR/cartsys/production/code/python 
cd python  
chmod +x *.py 
cd ../../../cgi-bin 

L'implicazione è che tu eri nella directory di codice e cambiato verso il basso di un livello di pitone, quindi il lettore che ha dimenticato dove si erano nella gerarchia della directory vede un promemoria per aiutarli a contare su 3 livelli.

cd .. 

<up arrow><ENTER> 
<up arrow><ENTER> 
<up arrow><ENTER> 
<up arrow><ENTER> 
0

È possibile controllare la recent project bd

Se ci si trova in questo percorso

/home/user/project/src/org/main/site/utils/file/reader/whatever 

e si vuole andare a site directory rapidamente (invece di digitare cd ../../../..),
quindi digitare:

bd site 
Problemi correlati