art*_*nrq 0 command-line shell bash command-history shell-script
当我们
!!
在 shell 会话中运行时,它会打印并运行上次执行的命令
我想知道它是否是另一个长期编写的 bash 内置命令的别名,并想知道它的定义位置
我也知道我们可以通过fc
命令与 shell 历史交互。
那么,究竟是!!
什么?
Bash 本身提供了“历史”功能。在 shell 上输入的命令被保存到一个文件中,这允许在以后调用和执行每个命令。
两个内置命令用于使用此功能。该fc
命令用于从历史记录中选择一个或多个命令,根据需要修改它们,然后执行它们。历史本身是使用history
命令管理的,其中包括保存或清除命令历史的选项。
此功能的另一部分是历史扩展,这是一种重新使用历史中的命令/参数作为输入的一部分的方法。要使用历史扩展,您需要指定历史扩展字符(默认为 '!')后跟一个标识符。此标识符可以由三个部分组成,每个部分由冒号 (':') 分隔。组件是:
由于事件指示符指的是特定的行,因此可以指定它们的一种形式是!n
- 指代历史的第 n 行。同样,!-n
指的是从文件末尾算起的第 n 行。
!!
被定义为 的同义词!-1
,它指的是历史的最后一行,因此是最后执行的命令。
有关更多详细信息,请参阅 Bash 手册中有关交互使用历史记录的部分。