私は頻繁に次のような状況で自分自身を見つける:(予想通り)!$
がNot a directory
あるので前のコマンドの最後の引数の `dirname`を取得するにはどうすればよいですか?
mv picture /very/long/path/favicon.ico
cd !$
2番目のコマンドは失敗します。私は/very/long/path
に私を連れていくbashの歴史の置換魔法がありますか?
私は頻繁に次のような状況で自分自身を見つける:(予想通り)!$
がNot a directory
あるので前のコマンドの最後の引数の `dirname`を取得するにはどうすればよいですか?
mv picture /very/long/path/favicon.ico
cd !$
2番目のコマンドは失敗します。私は/very/long/path
に私を連れていくbashの歴史の置換魔法がありますか?
!$:h
を使用することが必要とされたまさにないことを行うための簡単な方法があります。
代わりに$_
を利用できます。これは最後に実行されたコマンドの最後の引数に展開されます。そして、最後/
はどうしたら後の部分を取り除くために、単純なパラメータ展開:だから
${_%/*}
:
cd "${_%/*}"
ありがとうございました。もう一度私は '男bash'を待って、これがどのように動作するかを見つけてください。 :) –
@pii_ke:この関数を '〜/ .bashrc'に追加し、' x'を使う: 'x(){cd" $ {_%/ *} "; } ' – Cyrus
あなたは最後のコマンドを取得するには、このアプローチを使用することができ、質問はあなたがしたいものですそれと。
mv picture /very/long/path/favicon.ico
cd !$:h
出典:man bash
、文字列trailing filename
探しを Get bash history
はDIRNAMEコマンド
cd $(dirname !$);
まあ、 'cd/very/long/path && mv $ OLDPWD/picture .'では、長いパスを2度書き出す手間が省けます。しかし、この問題は私の習慣を変えるにはあまりにも些細かもしれません。 :P –