ターミナルの前の作業ディレクトリに移動する方法は?


213

ターミナルでは、cdコマンドでディレクトリを変更するときに、前にいたディレクトリに移動するキーをどのように定義できますか?

例えば、私がいるよ/opt/soft/binと私cd/etc/squid3、私は戻って最初のディレクトリに取得したいです。

回答:


284

使用できます

cd -

または使用できます

cd $OLDPWD

3
「cd-」を使用するときにディレクトリ名がコンソールに出力される理由は何ですか?
-dtmland

4
おそらく、古いシェルではプロンプトに現在のディレクトリの名前が表示されなかったため、を入力しcd -たときにディレクトリの名前を確認しておくと役に立ちました。たとえば、入力cd /usr/localすると、自分がにいることがわかりますが、/usr/loal入力cd -するときに、どのディレクトリから来たのかを常に覚えているとは限りません。ですから、入力する手間が省けますcd -; pwd。しかし、これはすべて推測です。
ラファエルアーレンス

2
または、エイリアスを使用できます。エイリアスを設定し、(4文字)ではなく(1文字)をalias -- -='cd -'使用します。高速化-cd -:D
ADTC

2
これなしでどうやって生きられるのでしょうか?
VSZM

1
@AndréKuhlmannあなたはcd -二度行うことができます。にcd /; cd /usr; cd -; cd -いるはず/usrです。しかし、あなたの質問を理解できなかったのかもしれません。
ラファエルアーレンス

54

他の回答は、直接的な回答の意味で間違いなく完全です。 cd -これcd $OLDPWDは間違いなく主な選択肢です。しかし、私はしばしば、ワークフローを使用pushdpopdてより良く機能することに気付きます。

簡単に言えば、開始した場所に戻るという究極の目的でディレクトリに移動する場合は、pushd/を使用しますpopd

拡張例

大きな違いは、例によって簡単に示されます。

$ cd dir1
$ pushd dir2

この時点で、ディレクトリスタックがありdir2, dir1ます。pushd引数なしで実行するdir1と、スタックが元の状態に戻りますdir1, dir2popd同じことをしますが、空のディレクトリスタックが残ります。これは、cd -ワークフローを使用していた場合と大差ありません。

ただし、ディレクトリを複数回変更してに戻ることができるようになりましたdir1。例えば、

$ cd dir1
$ pushd dir2
$ cd dir3

あなたが実行している場合はpopd、この時点で、あなたは戻って行きますdir1


2
ディレクトリをスタックすることもできるためpushdpopd-ing を使用している間、繰り返し使用して前のフォルダーに戻ります。
ベルンハルト

1
もちろん。でスタックをチェックすることを含む大規模な例をほとんど入れましたdirs -vが、私にとっての現実は、多くの場合、単純なケースが実際に使用するすべてであるということです。(または、さらに悪いことに、試行するときpush +2や類似するときに間違えます)また、誰かにワークフローを試行させるための簡単な手順を考えました。:)
ジョシュベリー

どのようにしてcdポップせずにスタックのトップに移動しますか?
ジョンディートン

18

以下を使用する必要があります。

cd ~-

cd -ディレクトリの迷惑なエコーなしで(現在受け入れられている回答から)と同じことを行い、cd "$OLDPWD"またはより入力しやすいcd - > /dev/nullです。


2
エコーをnullファイルにリダイレクトしています!天才です!!
ラム

2
エコーは、以前のディレクトリではなく、新しいディレクトリを表示します。そして、私はそれが便利だと思うので、特にプロンプ​​トで現在のディレクトリ名のみを表示する(またはまったく何も表示しない)シェルにいて、フルパスを表示するプロンプト。もちろん、プロンプトにすでに完全なパスが表示されている場合、エコーは冗長で迷惑です。その場合、(5文字)の代わりに(1文字)alias -- -='cd "$OLDPWD"'を使用して試してみることができると思います。-cd ~-:)
ADTC

ソースと説明:unix.stackexchange.com/a/330885/38213 Spoilers、-はオペランドで、〜はパスエイリアスです。だから、cd ~-/..動作しますが、cd -/..しません!
レイフォス

16
$ cd - 

前の作業ディレクトリに変更されます。


3

「〜/ .bashrc」ファイルを編集し、コマンドのエイリアスを含めることにより、「cd-」の「キーを定義」できます。たとえば、「cdc」を追加して「cd-」にすることができます。これにより、以下を追加することにより、最後のディレクトリに到達するためのより短い方法が提供されます。

alias cdc='cd -'

この方法では、単に「cdc」と入力すると、最後の作業ディレクトリに移動します。


5
そして、そのエイリアスが存在しないシステムを使用するとき、あなたを終わりのない混乱させます。たまに1文字入力する手間が省けます。なぜわざわざ?
CVn

2
「ターミナルでは、前のディレクトリに移動するキーどのように定義できますか」と私は混乱しません。別のシステムを使用している場合は、単にショートカットを使用するだけです。
Atari911

@ Atari911素晴らしい質問!ここに答えがあります:stackoverflow.com/questions/4200800ここに私がしたこと(バインドされたF12):(bind '"\e[24~":"\C-k \C-ucd -\n"'または、できればinputrc答えに記載されているようにファイルに移動します)。
ADTC

1

cd ..フォルダのツリーの先行フォルダに移動します。
cd -以前のフォルダーに移動します。このコマンドは一部のディストリビューション(ubuntu 16.04)では機能しませんでした。debian9で機能します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.