私はubuntuターミナルセッションについて非常に混乱しています。!
で始まり、一見ランダムなコマンドで番号が続くコマンドのセクションを置き換えるようです。 !87
でそれをscreen -l
で置き換え、さらに!88
で置き換え、ls
で置き換えます。
なぜこれが起こっているのか、どんなアイデアでも大歓迎です。
それはbash
の履歴展開です。
!87
履歴行87
からコマンドを再実行します。
この機能の説明は man bash
のセクション「HISTORY EXPANSION」にあります。
An event designator is a reference to a command line entry in the
history list. Unless the reference is absolute, events are relative to
the current position in the history list.
! Start a history substitution, except when followed by a blank,
newline, carriage return, = or ( (when the extglob Shell option
is enabled using the shopt builtin).
!n Refer to command line n.
!-n Refer to the current command minus n.
したがって、最後のコマンドをすばやく呼び出すには、!-1
を実行し、5番目の最後のコマンド!-5
を実行します。 !-1
の便利な同義語は!!
です。たとえば、 apt install something
でSudo
を忘れた場合は、Sudo !!
を実行するだけで十分です。
履歴拡張文字を引用できるのは、バックスラッシュ(\)と一重引用符のみです。
履歴の展開を回避するには、感嘆符をバックスラッシュ(\!
)でエスケープするか、一重引用符('!'
)を使用する必要があります。