私は現在、作業時間の多くを2つのパスの間を行ったり来たりするのに費やしています。ユーザーを最後のディレクトリに移動させるcd
の引数があれば、私の生活はずっと楽になるだろうと私は思います。
つまり、私がいるのなら:
/etc/foo/bar/baz/moo
その後、次のように入力します。
cd /var/lib/fubarred_app/blargh/logs
パス全体をもう一度入力しなくても、最初のディレクトリに戻ることができます。
各場所で十分なコマンドを使用しているので、メモリキーを切ることはできません。自分で入力するのと同じくらい、元に戻って必要なパスを見つけるのは困難です。
前のディレクトリに移動するだけの簡単なコマンドはありますか?
コマンド
cd -
主流のシェルのほとんどで必要なスワップを実行します。
cd "$OLDPWD"
これは前の作業ディレクトリを含む環境変数を使用します。
POSIXのmanページのcd
には、次のように記載されています。
DESCRIPTION
上記のステップの実行中にPWD環境変数が変更された場合、OLDPWD環境変数も古い作業ディレクトリ(つまり、cdの呼び出しの直前の現在の作業ディレクトリ)の値に変更されます。
オペランド
- オペランドとしてハイフンが使用されている場合、これは次のコマンドと同等になります。
cd "$OLDPWD" && pwd
これは前の作業ディレクトリに変更してからその名前を書き込みます。
Bryanの答えに加えて、スタックのようにディレクトリを構築するpushd
とpopd
もあるのは言及に値する。これはWindows NTでも利用可能です。ただし、すべてのシェルで利用できるわけではありません。
たとえば、3つの異なるディレクトリに移動できます。pushd
を呼び出すと、常にスタックが表示されます。
charon:~ werner$ pushd Documents/
~/Documents ~
charon:Documents werner$ pushd ../Movies/
~/Movies ~/Documents ~
charon:Movies werner$ pushd ../Downloads/
~/Downloads ~/Movies ~/Documents ~
そしてpopd
を3回続けて呼び出すと、スタック内のそれらのディレクトリに逆の順序でたどり着きます。同時に、スタックは再び空になります。
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
をスタックにプッシュします。
いくつかの "ジャンプ"プログラムがあります
これらはあらゆる種類のディレクトリナビゲーションを容易にします。あなたはパスの一部を与えることによってそれを使います、そして、それはただ働きます。
あなたの場合
~$ 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
cd -
とcd $OLDPWD
に加えて
履歴検索を使用するには、CTRL-R
を押して、以前に入力したcd
コマンドを数文字入力します。繰り返しCTRL-R
を押すと、より古いマッチが表示されます。
この方法は、変更するパスが3つ以上ある場合に便利です。
これを使ってディレクトリのエイリアスを簡単に作ることができます。
a() { alias $1=cd\ $PWD; }
a 1
以降:
1
bashmarks を使用すると、一連のフォルダをブックマークして、タブ補完しながらそれらの間を移動できます。
フォルダをブックマークするには、そのフォルダに移動してから、次のようにブックマークします。
bookmark foo
ブックマークの名前は "foo"になります。そのフォルダに戻りたいときは、
go foo
ブックマークのリストを見るには:
bookmarksshow
タブ補完は、shoobieブックマークに移動するために、単純に機能します。
go sho[tab]
もう1つの可能性は、2つのウィンドウを開いたままにして、1つを各ディレクトリに配置することです。
これは厳密にあなたの質問に対する答えではないことを知っていますが、という目標を達成して重要なディレクトリに移動するのに役立ちます.
どのUNIX系bashでも、CDPATHを使って、cdコマンドが検索するフォルダを拡張できます。
私の.bashrcファイルから:
export CDPATH='.:~/source/'
cdは最初に現在のフォルダを検索し、次に私のcoding-project-directoryを検索します。
cd myproject
..私は現在立っている場所から〜/ sources/myprojectに連れて行きます。
私のディレクトリナビゲーションを非常に助けている単純な小さな機能。
ディレクトリが2つしかない場合、最も簡単な方法は、前述のとおりです。
cd -
私が過去にそのようなことをしたとき、私は私がしたいくつかのトリックを持っていました、それは役に立つかもしれません。
.cshrcファイルにエイリアスコマンドを追加してください。
alias moo /etc/foo/bar/baz/moo
alias logs cd /var/lib/fubarred_app/blargh/logs
私のホームディレクトリから興味のあるパスへのショートカットをリンクします。これは一度だけです。
cd ~
ln -s /var/lib/fubarred_app/blargh/logs blargh
ln -s /etc/foo/bar/baz/moo
これにより、ディレクトリを簡単に変更できます。
cd ~/moo
cd ~/blargh
うん、cd -
は行くべき道ですが、私はあなたがあなたのシェルに持っている力の欠如について心配しています。 popd
とpushd
も良いです、そしてそのj
の事もまた良く見えます。
私は自分のユーティリティをリングに入れるでしょう...それは私が過去10年ほどかけて私が構築し、カスタマイズし、移行してきたものであり、それは私がやりたいことのためにちょうどうまく機能します。
それがあなたのために働くならば、素晴らしい、しかしそれがそれから私を約束しないならあなたは他に何かを得るでしょう:)あなたはcd
だけでは生きられません。
私は自分自身のツールを持っていますが、Dereksツールとj
も見ることになるでしょう。
もちろん前後にジャンプするための最初の選択肢は
cd -
私のツールはlocate
が利用可能なシステム上のユニークな名前を持つディレクトリのためのものです。一致するディレクトリ名を検索し、最初の一致にジャンプします。
beam ()
{
ldir=$(locate $1 | egrep "$1$" | head -n 1);
if [[ -d $ldir ]]; then
echo $ldir;
cd $ldir;
else
echo "no directory "$ldir;
fi
}
依存関係:
欠点:
改善点/修正点:
使用法:
私のソリューションの利点:
cd -
のように2つのディレクトリに限定されません