Bash

!!bash 命令

  • April 22, 2020

當我們!!在 shell 會話中執行時,它會列印並執行最後執行的命令

我想知道它是否是另一個長期編寫的 bash 內置命令的別名,並且想知道它是在哪裡定義的

我也知道我們可以通過命令與 shell 歷史互動fc

那麼,究竟是!!什麼?

Bash 原生提供了“歷史”功能。在 shell 上鍵入的命令會保存到一個文件中,這樣就可以在以後呼叫和執行每個命令。

兩個內置命令用於使用此功能。該fc命令用於從歷史記錄中選擇一個或多個命令,根據需要對其進行修改,然後執行它們。歷史記錄本身是使用history命令管理的,其中包括保存或清除命令歷史記錄的選項。

此功能的另一部分是歷史擴展,這是一種重用歷史中的命令/參數作為輸入的一部分的方法。要使用歷史擴展,您將指定歷史擴展字元(預設為“!”)後跟標識符。此標識符可以由三個部分組成,每個部分用冒號 (’:’) 分隔。組件是:

  1. 事件指示符,用於標識歷史列表中的目標行。
  2. 詞指示符,用於標識目標詞。
  3. 修飾符,改變擴展詞。

由於事件指示符是指特定的行,因此可以指定它們的一種形式是!n- 引用歷史的第 n 行。同樣,!-n指的是文件末尾的第 n 行。

!!被定義為 的同義詞!-1,它指的是歷史的最後一行,因此是最後執行的命令。

有關更多詳細資訊,請參閱 Bash 手冊中有關以互動方式使用歷史記錄的部分。

引用自:https://unix.stackexchange.com/questions/574190