通配符 * 如何解释为命令?

通配符 * 如何解释为命令?

我知道如何*在命令中解释,例如ls。但是,当尝试作为命令运行时,*shell 会尝试执行工作目录中的第一个文件或目录。为什么是这样? shell是怎么理解的*

答案1

与其他一些操作系统不同,在 Unix 中,是由 shell 扩展文件名通配符。它首先扩展参数扩展和通配符,然后使用(现在)第一个单词作为要运行的命令的名称。

这也是为什么以破折号开头的文件可能会很麻烦:像这样的通配符*将扩展到文件名,并且以破折号开头的名称可能会被视为一个选项。 (可怕的例子是,-r在工作目录中调用的文件会rm *递归地删除所有内容......)

不过,通常情况下,人们不会用作*任何命令行上的第一项,因此让第一个文件确定在这种情况下运行的命令不太可能导致问题。

相关内容