我使用grep已经有一段时间了,但是当我使用grep时有一些问题。 当我使用' grep'要在nginx错误日志中搜索一些字符串,我尝试两种方法: 之一:
grep 404.* error.log
为此,找不到任何东西
2:
grep '404.*' error.log
为此,可以在error.log中找到包含404的行
在我的例子中,' 404。*'是模式,基于结果,我认为当带有单引号或双引号的模式时,模式中的通配符可以工作,如果没有引号,则通配符只被视为文字字符串。 这样对吗?
答案 0 :(得分:1)
不,如果没有引号,shell会将其视为glob pattern,如果当前目录中有404.
的任何文件名,则将其展开:
~ $ mkdir newdir
~ $ cd newdir
~/newdir $ touch 404.foo 404.bar somethingelse
~/newdir $ ls
404.bar 404.foo somethingelse
~/newdir $ echo 404.*
404.bar 404.foo
当你使用grep时,这不是你想要的,所以你应该总是引用搜索模式。
~/newdir $ echo '404.*'
404.*