Bash
!!bash 命令
當我們
!!
在 shell 會話中執行時,它會列印並執行最後執行的命令我想知道它是否是另一個長期編寫的 bash 內置命令的別名,並且想知道它是在哪裡定義的
我也知道我們可以通過命令與 shell 歷史互動
fc
。那麼,究竟是
!!
什麼?
Bash 原生提供了“歷史”功能。在 shell 上鍵入的命令會保存到一個文件中,這樣就可以在以後呼叫和執行每個命令。
兩個內置命令用於使用此功能。該
fc
命令用於從歷史記錄中選擇一個或多個命令,根據需要對其進行修改,然後執行它們。歷史記錄本身是使用history
命令管理的,其中包括保存或清除命令歷史記錄的選項。此功能的另一部分是歷史擴展,這是一種重用歷史中的命令/參數作為輸入的一部分的方法。要使用歷史擴展,您將指定歷史擴展字元(預設為“!”)後跟標識符。此標識符可以由三個部分組成,每個部分用冒號 (’:’) 分隔。組件是:
- 事件指示符,用於標識歷史列表中的目標行。
- 詞指示符,用於標識目標詞。
- 修飾符,改變擴展詞。
由於事件指示符是指特定的行,因此可以指定它們的一種形式是
!n
- 引用歷史的第 n 行。同樣,!-n
指的是文件末尾的第 n 行。
!!
被定義為 的同義詞!-1
,它指的是歷史的最後一行,因此是最後執行的命令。有關更多詳細資訊,請參閱 Bash 手冊中有關以互動方式使用歷史記錄的部分。