
私は現在、ツリーのかなり下にあり、ルートで互いに分岐する 2 つのパスの間を行ったり来たりしながら、多くの時間を仕事に費やしています。cd
ユーザーを最後にいたディレクトリに移動させる引数があれば、私の仕事はずっと楽になるだろうと思います。
つまり、私が次の状況にある場合:
/etc/foo/bar/baz/moo
そして次のように入力します:
cd /var/lib/fubarred_app/blargh/logs
パス全体を再度入力しなくても、最初のディレクトリに戻れるようにしたいと思います。
メモリ キーでは不十分です。各場所で十分なコマンドを使用するため、戻って必要なパスを見つけるのは、自分で入力するのと同じくらい困難です。
前のディレクトリに移動できる短いコマンドはありますか?
答え1
コマンド
cd -
主流のシェルのほとんどで必要なスワップを実行しますが、古い長いバージョンは
cd "$OLDPWD"
以前の作業ディレクトリを含む環境変数を使用します。
のPOSIXマニュアルページcd
言及:
説明
上記の手順の実行中に PWD 環境変数が変更された場合、OLDPWD 環境変数も古い作業ディレクトリ (つまり、cd の呼び出し直前の現在の作業ディレクトリ) の値に変更されます。
オペランド
- ハイフンをオペランドとして使用する場合、これは次のコマンドと同等になります。
cd "$OLDPWD" && pwd
前の作業ディレクトリに変更し、その名前を書き込みます。
答え2
bryan の回答に加えて、ディレクトリをスタックのように構築する と がpushd
あることも言及する価値があります。これは Windows NT でも使用できますが、すべてのシェルで使用できるわけではありません。popd
たとえば、3 つの異なるディレクトリに移動して、次のように呼び出すと常にスタックが表示されますpushd
。
charon:~ werner$ pushd Documents/
~/Documents ~
charon:Documents werner$ pushd ../Movies/
~/Movies ~/Documents ~
charon:Movies werner$ pushd ../Downloads/
~/Downloads ~/Movies ~/Documents ~
3 回続けて呼び出すとpopd
、スタック内のディレクトリに逆順でアクセスします。同時に、スタックは再び空になります。
charon:Downloads werner$ popd
~/Movies ~/Documents ~
charon:Movies werner$ popd
~/Documents ~
charon:Documents werner$ popd
~
charon:~ werner$ popd
-bash: popd: directory stack empty
Zsh を使用している場合、 AUTO_PUSHD オプションがあり、自動的にcd
スタックにプッシュされます。
答え3
いくつかの「ジャンプ」プログラムがあります
これらにより、あらゆる種類のディレクトリナビゲーションが容易になります。パスの一部を指定するだけで、すぐに機能します。
あなたの場合
~$ j baz
/etc/foo/bar/baz/moo$
~$ j bla
/var/lib/fubarred_app/blargh/logs$
これらのプログラムには任意の文字を割り当てることができますが、「j」が伝統的です :)
j2 と z は複数の検索用語をサポートしています。
~$ j baz src
/home/me/projects/baz/repository/trunk/src$
...そしてさらに多くのオプション。
~$ j -l # list directories by "frecency"(frequency + recency) score
~$ j -r PATTERN # match by rank only, not recency
~$ j -t PATTERN # match by recency only, not rank
答え4
に加えて
cd -
、cd $OLDPWD
を押して、以前入力したコマンドCTRL-R
の文字をいくつか入力すると、履歴検索を使用できます。繰り返し押すと、古い一致が表示されます。cd
CTRL-R
この方法は、変更するパスが 2 つ以上ある場合に便利です。