GNU/Linux >> Linux の 問題 >  >> Linux

異なる引数を指定して前のコマンドを再実行します

!:0 トリックを行う必要があります。 zsh ドキュメントから:

   Word Designators
       A word designator indicates which word or words of a given command line
       are to be included in a history reference.  A `:' usually separates the
       event specification from the word designator.  It may be  omitted  only
       if  the  word designator begins with a `^', `$', `*', `-' or `%'.  Word
       designators include:

       0      The first input word (command).
       n      The nth argument.
       ^      The first argument.  That is, 1.
       $      The last argument.
       %      The word matched by (the most recent) ?str search.
       x-y    A range of words; x defaults to 0.
       *      All the arguments, or a null value if there are none.
       x*     Abbreviates `x-$'.
       x-     Like `x*' but omitting word $.

(bash でも動作します。) !-1 もあります。 その方が入力しやすい場合は。


#TL;DRAlt +0 +. :引数なしで最後のコマンドを挿入します

Ubuntu 18.04 でデフォルトのキーバインド設定 (つまり、Emacs キーバインド) でテスト済み

キーボード ショートカットを組み合わせることができます

最後のコマンドを次のように考えてみましょう:

mv foo bar

アップ , Ctrl +w :最後の単語のない最後のコマンド =mv foo

Alt +0 +. :最後のコマンドの最初の引数 =mv

便利なショートカット:

  • Alt +. :最後のコマンドから最後の引数を挿入 (繰り返して履歴に戻る)

  • Alt + +. :最後のコマンドから #n 番目の最後の引数を挿入 (繰り返して履歴に戻る)

  • Alt +- , Alt +.zsh: Alt +- +# +. :最後のコマンドから #n 番目の最初の引数を挿入 (繰り返して履歴に戻る)

  • カット コマンド (カーソルの位置に相対的)

  • Ctrl +w :最後の単語をカット

  • Alt + :次の単語をカット

  • Ctrl +k :後はすべてカット

  • Ctrl +zsh: Alt +w :前のすべてをカット

  • zsh: Ctrl + :コマンド全体をカットします (bash では Ctrl を組み合わせることができます + , Ctrl +k )

  • Ctrl +y :Cut コマンドで以前に切り取った文字を貼り付けます . bash では、cut コマンドを連鎖できます 、および Ctrl +y それらをすべて貼り付けます。

  • Ctrl +_ :最後の編集を元に戻す (Ctrl を超えると非常に便利です) +w )

  • Ctrl + :最後の単語に移動

  • Ctrl + :次の単語に移動

  • ホーム または Ctrl +a :コマンドの先頭に移動

  • 終了 または Ctrl + :コマンドの最後に移動

利用可能なすべてのショートカットを表示するには

  • バッシュ: bind -lp
  • zsh: bindkey -L

残念ながら、いくつかの制限があります

「words」には a-zA-Z のみが含まれます 文字なので、記号文字は単語のショートカットを停止します。

最後の引数が URL で、Ctrl で消去したい場合 +w 面倒です。

例:curl -I --header "Connection: Keep-Alive" https://stackoverflow.com/questions/38176514/re-run-previous-command-with-different-arguments

そのURLを消去するには Ctrl を使用 +w 、12 回繰り返す必要があります。

スペース文字でのみ停止する同様のショートカットがあると便利です

ここでこれを最新に保ちます:https://github.com/madacol/docs/blob/master/bash-zsh_TerminalShorcuts.md


Linux
  1. LinuxでのJQコマンドと例

  2. 同じ引数で別のコマンドを実行するにはどうすればよいですか?

  3. 遅れてバックグラウンドでコマンドを実行する方法は?

  1. 引数なしでコマンドを実行しないようにするシェルスクリプトラッパー?

  2. ユーザーとして引数を使用してスクリプトを実行しますか?

  3. 配列からの引数を使用してコマンドを実行しますか?

  1. Ubuntu - sudo を使用して起動時にコマンドを実行する

  2. bash履歴を使用して前のコマンドを取得し、それをコピーしてから「実行」しますが、コマンドはコメント化されています

  3. docker run へのコマンドライン引数