2012-05-18 14 views

risposta

39

Si può semplicemente fare

cd - 

che vi porterà indietro alla vostra posizione precedente.

Alcune shell consentono di utilizzare i comandi pushdir/popdir, check out this site. Puoi anche trovare utile questo SO question.

+0

Grazie. 'Pushd' e' popd' funzionerebbero! :) Ma c'è un modo per spegnere l'eco? (es., che quei comandi eseguano 'quiete'?) –

+2

@OneTwoThree Non lo so dato che di solito uso 'cd -'. Tuttavia, si potrebbe sempre fare qualcosa come "pushd>/dev/null" come un aggiramento. Se stai inserendo questo in uno script, potrebbe esserci un'opzione per silenziare la tua shell. – Levon

+0

Capisco. Grazie!!! –

1

È possibile eseguire il richiamo di PWD in una variabile e il cd torna a quella variabile. Potrebbe essere più tranquillo.

+0

Sì, è una buona idea! –

+0

Non è questo '$ OLDPWD'? – IsaacS

3

Se si sta eseguendo all'interno di uno script, è anche possibile eseguire parte dello script all'interno di un processo secondario, che avrà un valore privato di $ PWD.

# do some work in the base directory, eg. echoing $PWD 
echo $PWD 

# Run some other command inside subshell 
(cd ./new_directory; echo $PWD) 

# You are back in the original directory here: 
echo $PWD 

Questo ha i suoi vantaggi e svantaggi ... lo fa isolare la directory bene, ma la deposizione delle uova sotto-processi può essere costoso se si sta facendo un sacco. (EDIT: come indicato da @Norman Gray, la penalizzazione delle prestazioni di generazione del processo secondario probabilmente non è molto costosa rispetto a qualsiasi altra cosa accada nel resto dello script)

Per motivi di manutenibilità, I di solito uso questo approccio a meno che non riesca a dimostrare che lo script sta funzionando lentamente a causa di esso.

+0

+1 in linea di principio, ma hai _ misurato_ un successo in termini di prestazioni? Poiché ogni comando che non è un built-in di shell farà una fork, dubito che la fork di una subshell possa verosimilmente comportare una significativa penalizzazione delle prestazioni. –

0

Un'altra alternativa è un piccolo insieme di funzioni che è possibile aggiungere al vostro .bashrc che ti permettono di andare alle directory di nome:

# cd /some/horribly/long/path 
# save spud 
# cd /some/other/horrible/path 
# save green 
... 
# go spud 
/some/horribly/long/path 

Questo è documentato in A directory navigation productivity tool, ma fondamentalmente coinvolge salvare l'uscita di " pwd "nel nome mnemonico (" spud "e" green ") nel caso precedente, e quindi cd'ing al contenuto dei file.

Problemi correlati