Come andare alla precedente directory di lavoro nel terminale?


213

Nel terminale, come posso definire una chiave per andare alla directory precedente in cui mi trovavo quando ho cambiato directory con il cdcomando?

Ad esempio, sono dentro /opt/soft/bine cddentro /etc/squid3e voglio tornare alla prima directory.

Risposte:


284

Puoi usare

cd -

o potresti usare

cd $OLDPWD

3
Qualche idea sul perché il nome della directory sia stampato sulla console quando si usa "cd -"?
dtmland

4
Probabilmente poiché le vecchie shell non mostravano il nome della directory corrente nel prompt, è stato utile vedere il nome della directory durante la digitazione cd -. Ad esempio, quando digiti cd /usr/local, sai di essere in /usr/loal, ma quando digiti cd -, non ricordi sempre da quale directory vieni. Quindi ti salva dalla digitazione cd -; pwd. Ma questa è tutta speculazione.
Raphael Ahrens,

2
Oppure puoi usare l'aliasing: imposta l'alias come alias -- -='cd -'quindi usa -(1 carattere) anziché cd -(4 caratteri). Più veloce:D
ADTC

2
Come potrei mai vivere senza questo?
VSZM

1
@ AndréKuhlmann Puoi fare cd -due volte. Non cd /; cd /usr; cd -; cd -si dovrebbe essere in /usr. Ma forse mi manca capito la tua domanda.
Raphael Ahrens,

54

Le altre risposte sono sicuramente complete nel senso della risposta diretta. cd -e cd $OLDPWDsono sicuramente le scelte principali per questo. Tuttavia, trovo spesso che entrare in un flusso di lavoro pushde che popdfunzioni meglio.

Per farla breve, se ci si sposta in una directory con l'intento finale di tornare al punto di partenza, utilizzare pushd/ popd.

Esempio esteso

La differenza principale è facilmente rappresentata da un esempio.

$ cd dir1
$ pushd dir2

A questo punto, hai uno stack di directory che è dir2, dir1. L'esecuzione pushdsenza argomenti ti riporterà dir1con lo stack ora come dir1, dir2. popdfarebbe lo stesso, ma ti lascerebbe con uno stack di directory vuoto. Questo non è molto diverso da come saresti stato con il cd -flusso di lavoro.

Tuttavia, ora puoi cambiare directory più volte e tornare a dir1. Per esempio,

$ cd dir1
$ pushd dir2
$ cd dir3

Se corri popda questo punto, tornerai a dir1.


2
Puoi anche impilare le directory, quindi usa ripetutamente pushde torna alla cartella precedente mentre popd-ing.
Bernhard,

1
Certamente. Ho quasi fatto un grande esempio che includeva il controllo dello stack dirs -v, ma la realtà per me è che spesso il semplice caso è tutto ciò che uso davvero. (O peggio, commetto un errore quando provo push +2o simili) Inoltre, ho pensato a piccoli passi per convincere qualcuno a provare il flusso di lavoro. :)
Josh Berry,

Come si arriva cdin cima alla pila senza saltar fuori?
Jon Deaton,

18

Dovresti usare:

cd ~-

fa lo stesso di cd -(dalla risposta attualmente accettata) senza l'eco fastidioso della directory ed è più facile da digitare di cd "$OLDPWD"o cd - > /dev/null.


2
Reindirizzamento dell'eco su file null! È geniale !!
Ram

2
L'eco mostra la nuova directory non quella precedente. E lo troverei utile, in modo da sapere dove mi trovo ora, specialmente se mi trovo in una shell che mostra solo il nome della directory corrente (o niente) sul prompt, e sono troppo indifferente per cambiare il richiesta di mostrare il percorso completo. Naturalmente, se il tuo prompt mostra già l'intero percorso, l'eco sarebbe ridondante e fastidiosa. In tal caso, penso che puoi provare a fare alias -- -='cd "$OLDPWD"'quindi utilizzando -(1 carattere) anziché cd ~-(5 caratteri). :)
ADTC

Fonte e spiegazione: unix.stackexchange.com/a/330885/38213 Spoiler, - è un operando e ~ sono alias di percorso. Quindi cd ~-/..funziona ma cd -/..non lo fa!
Ray Foss

16
$ cd - 

passerà alla directory di lavoro precedente.


3

È possibile "definire una chiave" per "cd -" modificando il file '~ / .bashrc' e includendo un alias per il comando. Ad esempio potresti aggiungere 'cdc' per renderlo 'cd -' che ti fornirebbe un modo più breve per arrivare all'ultima directory aggiungendo:

alias cdc='cd -'

In questo modo dovresti semplicemente digitare 'cdc' e ti metterebbe nella tua ultima directory di lavoro.


5
E ti confonderai all'infinito quando usi un sistema in cui quell'alias non è in atto. Salva digitando un carattere ogni tanto. Perché nemmeno preoccuparsi?
un CVn

2
"Nel terminale, come posso definire una chiave per andare alla directory precedente" Non mi confondo mai. È solo una scorciatoia, quando ci si trova su un altro sistema, basta usare la mano lunga.
Atari911,

@ Atari911 ottima domanda! ecco la risposta: stackoverflow.com/questions/4200800 Ecco cosa ho fatto (associato a F12): bind '"\e[24~":"\C-k \C-ucd -\n"'(o più preferibilmente spostarlo nel inputrcfile come indicato nella risposta).
ADTC

1

cd ..passa alla cartella precedente nell'albero della cartella.
cd -va nella cartella che era prima. Questo comando non ha funzionato su alcune distro (ubuntu 16.04), funziona in debian 9.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.