如果我跑
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 histexpand
my.bashrc
并按Ctrl+R来搜索部分命令。