ある場所にcd
する必要のあるシェルスクリプトを書いています。以前の場所、つまりcd
が実行される前の場所に戻る方法はありますか?
あなたは簡単に行うことができます
cd -
それはあなたをあなたの前の場所に連れ戻すでしょう。
一部のシェルでは、pushdir/popdirコマンドを使用できます このサイトをチェックしてください 。これも SO質問 便利です。
スクリプト内で実行している場合は、サブプロセス内でスクリプトの一部を実行することもできます。サブプロセスのプライベート値は$ 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が以下で指摘しているように、サブプロセスを生成することによるパフォーマンスの低下は、スクリプトの残りの部分で発生している他の処理に比べて、おそらくそれほど高くありません)
保守性のために、スクリプトの実行速度が遅いことが証明できない限り、通常はこのアプローチを使用します。
PWDを変数にエコーし、CDをその変数に戻すことができます。静かかもしれません。
もう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する必要があります。ファイルの内容に。