这是一种幻觉.在执行命令之前扩展通配符,显示"ls"取决于扩展产生的单词数.当"ls"列出多个内容时,它会显示它列出的每个文件夹的名称.当"ls"仅列出单个文件夹时,它仅显示没有名称的内容.
键入"ls*s*"时,字符串会扩展为多个名称,因为目录中有多个名称包含"s".结果就好像你输入了类似"ls Desktop Music"的内容.当"ls"列出多个内容时,它会显示目录名称以及每个目录的内容,因此您可以获得如下列表:
Desktop:
foo
Music:
iTunes
Run Code Online (Sandbox Code Playgroud)
键入"ls*si*"时,字符串只会扩展为一个名称,因为目录中包含"si"的唯一名称是"Music".结果就好像你输入了"ls Music".当"ls"列出一个文件夹时,它只显示文件夹的内容而没有名称,因此您将获得如下列表:
iTunes
Run Code Online (Sandbox Code Playgroud)
要使"ls"仅列出匹配的内容,而不是其内容,请使用"ls -d*si*"."-d"表示列出目录的方式与列出文件的方式相同,而不是列出其内容.