首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KornShell中的通配符(ksh)

问KornShell中的通配符(ksh)
EN

Stack Overflow用户
提问于 2013-05-24 21:04:11
回答 1查看 1.4K关注 0票数 1

当我在我的主目录中,在终端中键入“ls*s*”时,它会显示其名称中包含“s”的所有文件夹和文件(例如,Music)。但是当我输入“ls*si*”时,它没有显示任何东西(我认为应该列出音乐)。为什么会这样呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-24 21:12:45

这是一种错觉。通配符是在命令执行之前展开的,“ls”显示的内容取决于展开产生的单词数。当“ls”列出多个内容时,它会显示它列出的每个文件夹的名称。当“ls”只列出一个文件夹时,它只显示内容,而不显示名称。

当您键入“ls*s*”时,字符串将扩展为多个名称,因为目录中有多个名称包含“s”。当“ls”列出多个内容时,它会显示目录名以及每个目录的内容,因此您会得到如下清单:

代码语言:javascript
复制
Desktop:
foo

Music:
iTunes

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

代码语言:javascript
复制
iTunes

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16735652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档