6

bashインタラクティブシェルで前のコマンドから最後から2番目(最後から2番目)の単語/引数を簡単に取得するにはどうすればよいですか? &バックグラウンドでコマンドを実行することがよくあります。たとえば、の前に指定されたファイルを取得したい

  % echo foo > /tmp/foo &
  % cat !$
  % &

上記の例で!$は、最後の単語&. しかし、最後から 2 番目の引数が必要です。/tmp/foo



のような範囲で単語指定子を使用することは可能であることに注意してください!-1:3

% (set -x; date; pwd; git status; git diff;  git log | tail -30; date; args=--verbose time make test; date) >& /tmp/log/make.test.20150122-Thu-0834 &
% echo !-1:30
/tmp/log/make.test.20150122-Thu-0834

上記の例は機能しますが、必要な単語が 30 番目の単語であることを数えて把握する必要があり、時間がかかり、エラーが発生しやすくなります。

最後から 2 番目 (最後から 2 番目) の単語を取得する簡単な方法はありますか?

更新: readlineのキー バインディング (キーなど)を使用するのではなく、コマンド ラインで入力するもの (イベント designatorのような履歴展開、または単語 designatorなど)を探していることに注意してください。!! $ esc

(この質問は、対話型シェルの前のコマンドの引数を参照しており、コマンドラインからシェル スクリプトに渡された引数を参照していないことに注意してください。ここでいくつかの回答やコメントが参照されています。)

4

2 に答える 2

3

これを使用して、履歴の最後のコマンドの 3 番目の引数を使用してコマンドを実行します。

echo foo > /tmp/foo &
cat !-1:3
于 2015-01-22T18:02:20.473 に答える