为什么 `!45` 被替换为 `top`?

为什么 `!45` 被替换为 `top`?

我试图在 Ubuntu 12.04 中进行字符串搜索,结果如下:

find . -exec grep -l "!45" {} \;

不再搜索字符串“!45”,而是将其替换为top。它没有调用该命令,而只是开始搜索术语“top”。在我弄清楚-Ffor之前grep,我认为特殊字符会被视为引号之间的文本。

无论如何,既然我发现了这一点,我不知道这是什么,它有什么用,或者它为什么存在!

答案1

在 bash shell 中,!45从命令历史记录中返回该命令(或!32!873)。

事件指示符是对历史列表中命令行条目的引用。除非引用是绝对的,否则事件是相对于历史列表中的当前位置的。

启动历史记录替换,除非后面跟有空格、制表符、行尾、“=”或“(”(当使用内置 shopt 启用 extglob shell 选项时)。

!n

请参阅命令行 n。

检查这里获取 bash 手册的完整详细信息。

相关内容