私は最近発行された最後のコマンドをsudoで繰り返すためにこの賢いbashエイリアスを見つけました。sudo !!
コマンドが失敗した後は、端末で直接を使用してこれを実行できます。
私が見つけたエイリアスはalias mycmd='sudo $(history -p \!\!)'
これがどのように機能するのかよくわかりません。
答え1
$(history -p \!\!)
履歴に再度追加せずに最後に実行されたコマンドを取得する方法。からhelp history
:
-p perform history expansion on each ARG and display the result
without storing it in the history list
Bashでは、!!
最後に実行されたコマンドまで拡張されますが、この拡張はエイリアス拡張の前に実行されるため、エイリアスでは直接使用できません。 (歴史的拡張は最も初期の拡張の1つです。これは支柱の拡張前にも発生しました(例:通常最初).)
したがって、最後に実行されたコマンドを取得するには、どの方法を使用する必要があります。これは、シェル方式を拡張した をhistory -p
使用して行うことができます。!!
なぜ逃げたのか分からないけど!
。私にはバックスラッシュがなくてもうまくいきます。