? 通配符在 LS 目录搜索中产生意外结果

? 通配符在 LS 目录搜索中产生意外结果

我正在尝试掌握 CLI(命令行界面)。

在总体根目录中,我进行了以下操作:

root@droplet:/# ls ?tc

我希望只获取etc结果列表中的目录。

但是,我得到了一个很长的文件和目录列表。这个列表比我没有添加ls任何附加条件时得到的列表还要长(而且长得多)。为什么?

答案1

我从你的措辞推测你期望返回一个结果:

# ls ?tc
etc

但实际上你得到了几个结果。

问号是通配符,定义如下:

?

外卡。该?字符在通配符中用作文件名扩展的单字符“通配符”,并在扩展正则表达式中表示一个字符。

发生的事情是通配符被 shell 扩展了(大概bash在传递给ls1.因此ls将其视为:

# ls etc

这将返回许多“文件和文件夹2/etc


1:你可以测试扩展是否发生通过尝试执行命令:echo *- 这将(应该!)回显当前目录中的文件和目录。

2:如果你想要掌握命令行,最好使用术语'目录''文件夹':-)

相关内容