web-dev-qa-db-ja.com

`dirs`の項目を参照してください

pushdを使用してbashzshの複数のディレクトリを操作します。 dirsdirs -vにエイリアスして、ディレクトリスタックの内容を確認したいときに順序付きリストを取得できるようにしました。

chb$ dirs
0  /Volumes/banister/grosste_daever_gh/2013-03-27/reader
1  /tmp/20130618202713/Library/Internet Plug-Ins
2  ~/code/foo/view/static/css
3  ~/Downloads

スタック上の位置のエイリアスを使用して、コマンドラインにリストされているディレクトリの1つを参照できる方法(bashまたはzshのいずれか)はありますか?たとえば、次のように入力する代わりに:

chb$ cp ~/code/foo/view/static/css/baz.css ~/code/bar/view/static/css/

私はタイプします:

chb$ cp <2>baz.css ~/code/bar/view/static/css/

...または何かlikeそれは、おそらく<n>の代わりにドル記号と変数名を使用します。

6
chb

Bashは DIRSTACK変数 のディレクトリスタックを公開します。コマンドdirs +2を使用して、スタックの2番目のエントリを参照することもできます。

より便利なことに、~1から~9は、スタックの最上位9つのエントリを参照します。したがって、あなたの例は次のように翻訳されます

chb$ cp ~2/baz.css ~/code/bar/view/static/css/

Zshには 同じ〜n機能 があり、スタックはdirstackという配列を介して公開されます。 Bashのdirs +2は、zshのprint -r ~2またはprint -r $dirstack[2]です。

11
tripleee

はい、bashで:

cp $(dirs +2) ~/code/bar/view/static/css/

またはさらに簡単:

cp ~2 ~/code/bar/view/static/css/
2
suspectus