繁体   English   中英

KornShell(ksh)中的通配符

[英]Wildcards in KornShell (ksh)

当我在主目录中并在终端中键入“ ls * s *”时,它会显示所有名称中带有“ s”的文件夹和文件(例如,音乐)。 但是,当我键入“ ls * si *”时,它什么也没有显示(我认为应该列出“音乐”)。 这是为什么?

这是一种幻想。 通配符在执行命令之前已展开,“ ls”显示的内容取决于扩展产生的字数。 当“ ls”列出多个项目时,它将显示它列出的每个文件夹的名称。 当“ ls”仅列出一个文件夹时,仅显示内容,而不显示名称。

当您键入“ ls * s *”时,字符串将扩展为多个名称,因为目录中包含“ s”的名称不止一个。 结果就像输入了“ ls Desktop Music”之类的东西。 当“ ls”列出多个内容时,它会显示目录名称以及每个目录的内容,因此您将获得如下清单:

Desktop:
foo

Music:
iTunes

当您键入“ ls * si *”时,字符串将扩展为仅一个名称,因为目录中唯一包含“ si”的名称是“ Music”。 结果就像您输入了“ ls Music”。 当“ ls”列出一个文件夹时,它仅显示该文件夹的内容,而没有名称,因此您将得到如下列表:

iTunes

要使“ ls”仅列出匹配的内容,而不列出其内容,请使用“ ls -d * si *”。 “ -d”表示以列出文件的方式列出目录,而不是列出其内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM