26

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

4

4 に答える 4

64

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

cd -

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

一部のシェルでは、pushdir/popdirコマンドを使用できます。このサイトを確認してください。このSOの質問も役立つかもしれません。

于 2012-05-18T15:57:11.527 に答える
4

スクリプト内で実行している場合は、サブプロセス内でスクリプトの一部を実行することもできます。サブプロセスのプライベート値は$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が以下で指摘しているように、サブプロセスを生成することによるパフォーマンスの低下は、スクリプトの残りの部分で発生している他の処理に比べて、おそらくそれほど高くはありません)

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

于 2012-05-18T16:16:04.193 に答える
1

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

于 2012-05-18T16:05:49.057 に答える
0

もう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します。

于 2014-02-03T13:47:19.930 に答える