我正在尝试掌握 CLI(命令行界面)。
在总体根目录中,我进行了以下操作:
root@droplet:/# ls ?tc
我希望只获取etc
结果列表中的目录。
但是,我得到了一个很长的文件和目录列表。这个列表比我没有添加ls
任何附加条件时得到的列表还要长(而且长得多)。为什么?
答案1
我从你的措辞推测你期望返回一个结果:
# ls ?tc
etc
但实际上你得到了几个结果。
问号是通配符,定义如下:
?
外卡。该
?
字符在通配符中用作文件名扩展的单字符“通配符”,并在扩展正则表达式中表示一个字符。
发生的事情是通配符被 shell 扩展了(大概bash
)在传递给ls
1.因此ls
将其视为:
# ls etc
这将返回许多“文件和文件夹2 ” /etc
。
1:你可以测试扩展是否发生前通过尝试执行命令:echo *
- 这将(应该!)回显当前目录中的文件和目录。
2:如果你想要掌握命令行,最好使用术语'目录'到'文件夹':-)