!! bash 命令

art*_*nrq 0 command-line shell bash command-history shell-script

当我们!!在 shell 会话中运行时,它会打印并运行上次执行的命令

我想知道它是否是另一个长期编写的 bash 内置命令的别名,并想知​​道它的定义位置

我也知道我们可以通过fc命令与 shell 历史交互。

那么,究竟是!!什么?

Hax*_*iel 6

Bash 本身提供了“历史”功能。在 shell 上输入的命令被保存到一个文件中,这允许在以后调用和执行每个命令。

两个内置命令用于使用此功能。该fc命令用于从历史记录中选择一个或多个命令,根据需要修改它们,然后执行它们。历史本身是使用history命令管理的,其中包括保存或清除命令历史的选项。

此功能的另一部分是历史扩展,这是一种重新使用历史中的命令/参数作为输入的一部分的方法。要使用历史扩展,您需要指定历史扩展字符(默认为 '!')后跟一个标识符。此标识符可以由三个部分组成,每个部分由冒号 (':') 分隔。组件是:

  1. 事件指示符,用于标识历史列表中的目标行。
  2. 词指示符,用于标识目标词。
  3. 修饰符,改变扩展词。

由于事件指​​示符指的是特定的行,因此可以指定它们的一种形式是!n- 指代历史的第 n 行。同样,!-n指的是从文件末尾算起的第 n 行。

!!被定义为 的同义词!-1,它指的是历史的最后一行,因此是最后执行的命令。

有关更多详细信息,请参阅 Bash 手册中有关交互使用历史记录的部分。