带有“[”、“]”和“?”的 ls 命令有什么作用?

带有“[”、“]”和“?”的 ls 命令有什么作用?

我对这个命令感兴趣:

ls [A-D]?.txt

这是评估中的一道 Unix 问题。我们被要求定义这个命令的作用。

答案1

简单地描述命令的作用可能对你来说毫无用处,部分原因是具体的命令本身可能没有太大的意义,但也因为它的效果在某种程度上依赖于上下文(见下文)。更有趣的是——我希望这可以更有效地为您和通过搜索找到此页面的其他人解答这个问题——有关所涉及的概念以及要查阅哪些文档的信息。

大多数 shell 都执行通配符,也称为文件名扩展和路径名扩展。在通配符中,包含特定特殊字符的文本将被视为模式,并扩展为与该模式匹配的现有文件的名称。不同的 shell 的语法不同,但通用语法(由POSIX——特别对待*、、?[

有关 glob 的一般信息,您可以运行man 7 glob。这将显示一个手册页,解释常用语法并涵盖一些重要的概念问题,包括 glob 与正则表达式的不同之处,尽管它们有一些相似之处。

然后,具体来说:通配符由你的 shell 执行,因此请查阅你的 shell 的文档。如果你的 shell 是 bash,你可以运行man bash,但最好的参考文档是Bash 参考手册. 你可以在其中验证扩张shell 执行的是文件名扩展,并阅读有关如何执行文件名扩展的详细信息。

我希望你不要认为我在试图隐瞒信息,因为这不是我的目标。我只是不了解你的课程涵盖了哪些材料以及需要哪些假设和详细程度。这里涉及一些复杂问题。参考手册描述了影响结果的 shell 选项和环境变量。

假设你的 shell 是 bash,我强烈建议阅读文件名扩展模式匹配部分,并记住当前的语言环境可能会影响[A-D]匹配的模式。

根据课程性质和您目前所处的位置,这些信息可能比您需要的更多。但熟悉文档将使事情变得更容易,并使您能够有效地弄清楚如何做您需要做的事情。无论如何,如果您不确定哪些内容与您的作业相关或重要,您可以咨询您的导师和/或课程材料。

至于,这是一个外部命令,您可以通过运行或查阅来ls了解它的工作原理man lsGNU coreutils 参考手册

您可以使用命令阅读手册页man,也可以在线浏览和阅读。您可以执行此操作的地方之一是Ubuntu 手册页存储库

最后,你可能有兴趣看看POSIX 标准,如果不是现在,那么在某个时候。关于Shell 命令语言涵盖 POSIX shell 并包含有关文件名扩展的材料。

相关内容