web-dev-qa-db-ja.com

特定のディレクトリにポップするにはどうすればよいですか?

pushdを使用してさまざまなディレクトリに移動しましたが、実行すると

dirs -v

私は得る:

 0  ~/Desktop
 1  /etc
 2  /var/log
 3  ~/Downloads
 4  /tmp

スタックの途中にある特定のディレクトリにpopdするにはどうすればよいですか?例:option 2: /var/log

man bashは言う

+ n表示されているリストの左側からn番目のエントリを削除します
ゼロから始まるdirsによる。例: `` popd +0 ''は
最初のディレクトリ、2番目の「popd +1」。

私はもう試した

  • 「ポップ+0」
  • ポップ+3

また、正しいディレクトリをスタックからポップしますが、現在の作業ディレクトリは変更しません。

特定のディレクトリをpopdして、現在の作業ディレクトリを「ポップされた」ディレクトリに変更するにはどうすればよいですか?

2
the_velour_fog
cd "`dirs +<number>`"

ここで、<number>は0または3などです。

いずれにせよ、 http://davidcorne.com/tag/cd/ などのCDラッパーをチェックすることをお勧めします。これはバックグラウンドでdirスタックにPushesし、許可しますcd --およびdirs -vの代わりにcd -<number>を実行して、目的のディレクトリに移動します。また、最初のティルダを$HOMEに置き換え、コメントでほのめかした問題を排除します。

3
PSkocik

Cygwinディストリビューションの.bashrcファイルでスクリプトを見つけました。 20行目なので正しく動作しませんでした

adir=$(dirs +$index)

adirにインデックスが含まれるようになりました(例: '2/cygdrive/d')ので、その後に行を追加しました

adir=${adir:4}

そしてそれはうまくいくようです

0
Irwin