ある場所に移動する必要のあるシェルスクリプトを書いていcd
ます。以前の場所、つまり実行前の場所に戻る方法はありますcd
か?
4 に答える
あなたは簡単に行うことができます
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します。