Domanda

, in generale, si usa

cd .. per andare alla directory superiore

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

cd ../../../../../ per directory principale 5 °.

esiste un modo semplificato di fare questo?

shell che sto usando è ksh.

È stato utile?

Soluzione

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

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

Esempio di utilizzo:

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

Ecco una funzione che cd in una sottodirectory di nome sopra la directory di lavoro corrente:

cdu () { cd "${PWD%/$1/*}/$1"; }

Esempio di utilizzo:

/usr/share/atom/resources/app/apm/src/generator$ cdu apm
/usr/share/atom/resources/app/apm$ cdu resources
/usr/share/atom/resources$ cd -
/usr/share/atom/resources/app/apm$ cdu share
/usr/share

Altri suggerimenti

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 file batch 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 ../../../../../..'

È necessario essere attenti se si imposta qualsiasi alias come questo. Non sarà sempre salire 5 directory quando si cd ../../../../... Se siete solo 2 o 3 directory giù da / si finisce in /. Prova questo per te.

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

Questo accade perché la directory padre di / è infatti /.

È possibile controllare la recente progetto bd

  

Se vi trovate 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 basta digitare:

bd site

Se non ti piace digitare o ricordare i nomi dei file, è possibile navigare le directory con qualcosa di simile NerdTree?

Si potrebbe definire alias per semplificare questo tipo di operazione cd.

Si noti 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

uso cd / per andare alla radice di voi filesystem, e cd ~ per andare a casa directory.
Esempio:. Per andare a te direttore accedere solo fare cd /var/log

Per shell di tipo Bourne (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
}

Questo è generalmente come lo faccio. Naturalmente, in ksh si possono avere i tasti di navigazione impostati su qualcos'altro. Quando ho usato ksh ho usato li hanno impostata a vi stile in modo che sarebbe k invece di freccia.

In 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 modo:

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

Questo è abbastanza chiaro. Eseguire un'azione nella directory di lavoro corrente, quindi passare su 3 livelli e selezionare la directory cgi-bin. Chiunque sarebbe in grado di comprendere cosa si sta facendo nello script di shell non dovrebbe avere difficoltà a seguire questo. 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 eravate nella gerarchia di directory vede un promemoria per aiutarli a contare fino a 3 livelli.

cd ..

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

ho scritto un programma di utilità di shell per questo caso d'uso: https://github.com/kkew3/cdup. Come alcuni esempi:

  • per andare 4 directory verso l'alto, l'uso up -4.
  • per andare alla directory principale corrispondente più vicino globbing modello site*, utilizzare up '/site*/'.
  • per andare al più vicino directory padre corrispondenza regex [pP]roj(ect)?, utilizzare up -E '[pP]roj(ect)?'.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top