全球化是shell的一个特征吗?

我读了很多这样的问题和答案

我知道在运行命令之前shell会扩展通配符,它​​们是shell的一个function。 通配符也可以使用那些可以接受许多参数的命令。 在find . -name *.rb find . -name *.rb如果我们在当前目录中有多个文件find会给我们一个错误,因为find不能接受多个参数,解决这个问题的方法是:

 find . -name "*.rb" find . -name '*.rb' find . -name \*.rb 

我们逃避星号并防止shell扩展,但通配符是shell的一个特征; 当我们逃避星号shell时不知道它的意思,它应该找到一个名为*.rb的文件,那么在这种情况下如何扩展星号呢?

是的,shell将*理解为目录中包含任何字符的所有文件,并将*.rb理解为具有任何字符并以.rb结尾的所有文件,并将其展开。

find命令本身接受globbing。

如果你不引用*那么shell会在find命令看到它的参数之前展开它,所以不是将glob *.rb传递给find ,而是将目录中与glob匹配的所有文件的名称传递给findfind会尝试将它们解释为参数,这可能会导致错误,或者至少不是你想要的(只有在当前目录中没有匹配的文件时它才能正常工作)