2012-05-18 7 views

Antwort

39

können Sie tun einfach

cd - 

, die Sie zurück zu Ihrer vorherigen Position zu nehmen.

In einigen Shells können Sie Pushdir/Popdir-Befehle verwenden, check out this site. Möglicherweise finden Sie auch diese SO question nützlich.

+0

Danke. Das 'Pushd' und' Popd' würde funktionieren! :) Aber gibt es eine Möglichkeit, das Echo auszuschalten? (Das heißt, lassen Sie diese Befehle 'quiety' ausführen?) –

+2

@OneTwoThree Ich weiß nicht, wie ich normalerweise 'CD-'. Du könntest jedoch immer etwas wie "pushd>/dev/null" als Arbeit machen. Wenn Sie dies in ein Skript einfügen, gibt es möglicherweise eine Option zum Stummschalten Ihrer Shell. – Levon

+0

Ich verstehe. Vielen Dank!!! –

1

Sie könnten PWD in eine Variable und die CD zurück zu dieser Variable echo. Es kann leiser sein.

+0

Ja, das ist eine gute Idee! –

+0

Ist das nicht $ OLDPWD? – IsaacS

3

Wenn Sie in einem Skript arbeiten, können Sie auch einen Teil des Skripts in einem Unterprozess ausführen, der einen privaten Wert von $ PWD hat.

# 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 

Das hat seine Vor- und Nachteile ... es das Verzeichnis schön tut isolieren, aber Teilprozesse Laich teuer sein kann, wenn Sie es viel zu tun. (BEARBEITEN: Wie @Norman Gray unten zeigt, ist die Leistungseinbuße beim Erzeugen des Unterprozesses wahrscheinlich nicht sehr teuer im Vergleich zu dem, was sonst im Rest des Skripts passiert)

Aus Gründen der Wartbarkeit Normalerweise verwende ich diesen Ansatz, es sei denn, ich kann beweisen, dass das Skript deswegen langsam läuft.

+0

+1 im Prinzip, aber haben Sie _bemessen_ einen Leistungseinbruch? Da jeder Befehl, der keine integrierte Shell ist, einen Fork ausführt, bezweifle ich, dass der Fork für eine Subshell wahrscheinlich zu einer erheblichen Leistungseinbuße führt. –

0

Eine weitere Alternative ist ein kleiner Satz von Funktionen, die Sie auf Ihre .bashrc hinzufügen können, die Ihnen erlauben zu benannter Verzeichnisse zu gehen:

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

Das bei A directory navigation productivity tool dokumentiert ist, sondern umfasst im Wesentlichen die Ausgabe von "Spar pwd "in den genannten mnemonics (" spud "und" green ") im obigen Fall, und dann cd'ing zu den Inhalten der Dateien.