echo $$
私もしばらく前に遊んでいました。まあ、これはシェルのpidを示しています。しかし、私がやったので、echo !
すぐに登場しました!それecho !!
から
echo echo !
echo !
$echo !!!
ジュン
echo echo echo !!
echo echo !!
出力がわかりません。私が知る限り、echo !!
シェルで最後に実行されたコマンドが提供されます。しかし、ここで得られる結果は奇妙に見えます。私はbashシェルを使います。
答え1
これ歴史的出来事指標 !!
履歴の最後のコマンドに置き換えられました。 Bashは最初にコマンドの実行方法を印刷してから実行します。
例:
$ foo
foo: command not found
$ !!
foo # command to be executed
foo: command not found # result of execution
あなたの場合:
$ echo !
!
$ echo !!
echo echo ! # command to be executed
echo ! # result of execution
$ echo !!!
echo echo echo !! # command to be executed
echo echo !! # result of execution
イベントインジケータを持つコマンドは、入力したとおりに履歴に挿入されません。最初にイベントインジケータが展開され、次にコマンドが履歴に入力されます。そのため、3番目のコマンド(echo !!!
)では、イベントインジケータがecho !!
(2番目のコマンド入力)ではなくecho echo !
(2番目のコマンド拡張)に置き換えられます。
交換した部品が強調表示された最後のコマンドは次のとおりです。
$ echo (!!)!
echo (echo echo !)! # command to be executed
echo echo !! # result of execution
答え2
!!
使うなら交換済み頼る最後のコマンドシェルから、だから最初の行それ交換マーク echo echo !
そして第二一つは出力 echo !