pushd
を使用してbash
とzsh
の複数のディレクトリを操作します。 dirs
をdirs -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>
の代わりにドル記号と変数名を使用します。
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]
です。
はい、bashで:
cp $(dirs +2) ~/code/bar/view/static/css/
またはさらに簡単:
cp ~2 ~/code/bar/view/static/css/