grep .* 从 .bash_history 返回结果并抱怨

Cha*_*dis 2 shell grep quoting wildcards

我是 Linux 新手,到目前为止我一直在玩一些实用程序,特别是 grep 实用程序。我决定创建一个包含以下内容的新文件(恰当地称为“newfile”):

Lady of the night,
I hold you close to me,
And everything is out of sight,
I think I'll be alright.
Run Code Online (Sandbox Code Playgroud)

当我尝试通过输入 'grep .* newfile' 通过 grep 运行它时,我期望只显示文件的行;然而,它打印了几个结果,从:

grep: ..: Is a directory
Run Code Online (Sandbox Code Playgroud)

并跟进整个 .bash_history(为了保持这篇文章的简短,我将省略),然后是 newfile 的内容。为什么会这样?有没有办法解决这个问题?我必须改变我的正则表达式吗?

Jen*_*ens 5

做个实验!跑

echo grep .* newfile
Run Code Online (Sandbox Code Playgroud)

你能从结果中得出什么结论?当您引用(放在单引号或双引号中)grep 的第一个参数时,结果如何变化?

如果您想直接了解这一点,请阅读Pathname Expansion的POSIX 规范。了解有关各种扩展的所有信息将使您立即成为 shell 专家 :-)