为什么要 grep "!"显示“bash:!:未找到事件”?

为什么要 grep "!"显示“bash:!:未找到事件”?

如果我跑

grep "!" test.txt

它会显示错误

bash: !: 未找到事件

好吧,我知道我实际上应该使用grep '!'.但如何理解上面的错误呢?

我知道!是 bash 特殊字符。根据http://mywiki.wooledge.org/Quotes

双引号:“...”阻止某些替换,但允许其他替换。执行以美元符号 $ 开头的每个替换,就像旧版...(反引号)命令替换一样。还执行反斜杠转义。不执行分词或文件名扩展。

它没有提到双引号会影响!。有人可以解释一下 bash 或 grep 如何解释吗grep "!"?什么是“事件”?

答案1

并不是grep这个原因造成的。是你bash在解释!.切换到较新版本bash或使用single quotes '!'来闭嘴bash

答案2

你正在看 Bash 的历史扩展特征。有些人发现回忆以前的命令很方便,但我只是输入set +o histexpandmy.bashrc并按Ctrl+R来搜索部分命令。

相关内容