在 Centos 和 Debian 上我试过这个。
ls 命令中的 * 是否意味着递归搜索?
如果我开始输入目录名称并点击选项卡,我会看到:
# ls /etc/rc<tab>
rc0.d/ rc1.d/ rc2.d/ rc3.d/ rc4.d/ rc5.d/ rc6.d/ rc.local rcS.d/
Run Code Online (Sandbox Code Playgroud)
我想如果我在路径中放一个星号,我会看到同样的东西,但它进行了递归搜索:
# ls /etc/rc*
/etc/rc.local
/etc/rc0.d:
K50netconsole K90network
/etc/rc1.d:
K50netconsole K90network
/etc/rc2.d:
K50netconsole S10network
/etc/rc3.d:
K50netconsole S10network
...
Run Code Online (Sandbox Code Playgroud)
windows dir 命令只会向我显示与 /etc/rc* 匹配的目录,我怎样才能从 ls 获得这种行为(不使用 tab 键)?
****编辑/更新:
好的,现在我明白 * 是由 bash 而不是命令解释的,但它是否总是被解释为“枚举文件和文件夹条目”,或者如果我在不同的上下文中使用它,它会做其他事情吗? bash 中的 if 语句表示“如果 * 与文件系统路径一起使用返回文件和文件夹名称,如果 * 与 rpm 一起使用(如rpm -qa post*)返回包名称等”
星号在到达ls命令之前扩展,所以这相当于
ls /etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d /etc/rc4.d ...
Run Code Online (Sandbox Code Playgroud)
这将分别列出每个目录的内容。
您可能希望使用ls -d /etc/rc*禁止列出目录中的文件,或使用仅显示扩展名的命令,例如echo /etc/rc*.