我有一本书说命令的输出echo *
是下面的行。我找不到它为什么输出这个。请帮忙。
$ echo *
local.cshrc local.login local.profile
答案1
*
是 shell 特殊字符(全局匹配),匹配当前目录中的文件和目录的名称。
$ ls *
这将列出当前目录中的所有文件和目录。因此,在您的情况下,“*”返回,“echo”将它们打印在控制台上。尝试这样做来确认:
$ x=*
$ echo $x
答案2
您正在使用一个通配符-与和 一起*
使用。globbing
file-expansion
上面引用的链接进一步描述了这一点:
各种命令行实用程序使用标准通配符(也称为通配模式)来处理多个文件。有关标准通配符(通配符模式)的更多信息,请通过键入以下内容参阅手册页:
和
*
(星号)这可以代表任意数量的字符(包括零个,换句话说,零个或多个字符)。如果您指定“cd*”,它将使用“cda”、“cdrom”、“cdrecord”以及以“cd”开头的任何内容,也包括“cd”本身。 “m*l”可以是 mill、mull、ml 以及任何以 m 开头并以 l 结尾的内容。