web-dev-qa-db-ja.com

'cd'コマンドの後で前の場所に戻りますか?

ある場所にcdする必要のあるシェルスクリプトを書いています。以前の場所、つまりcdが実行される前の場所に戻る方法はありますか?

24
One Two Three

あなたは簡単に行うことができます

cd -

それはあなたをあなたの前の場所に連れ戻すでしょう。

一部のシェルでは、pushdir/popdirコマンドを使用できます このサイトをチェックしてください 。これも SO質問 便利です。

56
Levon

スクリプト内で実行している場合は、サブプロセス内でスクリプトの一部を実行することもできます。サブプロセスのプライベート値は$ 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

これには長所と短所があります...ディレクトリを適切に分離しますが、サブプロセスの生成は、多くの場合、コストがかかる可能性があります。 (編集:@Norman Grayが以下で指摘しているように、サブプロセスを生成することによるパフォーマンスの低下は、スクリプトの残りの部分で発生している他の処理に比べて、おそらくそれほど高くありません)

保守性のために、スクリプトの実行速度が遅いことが証明できない限り、通常はこのアプローチを使用します。

4

PWDを変数にエコーし、CDをその変数に戻すことができます。静かかもしれません。

1
kalikid021

もう1つの方法は、名前付きディレクトリに移動できるようにする.bashrcに追加できる関数の小さなセットです。

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

これは ディレクトリナビゲーション生産性ツール で文書化されていますが、基本的には、上記の場合、「pwd」の出力を名前付きニーモニック(「spud」および「green」)に保存してからcdする必要があります。ファイルの内容に。

0
Robert Krten