Unix:如果我输入 ls -d [2-q]* 会发生什么

Unix:如果我输入 ls -d [2-q]* 会发生什么

因为无法在 2 和 q 之间按词法排列字符,所以它会忽略 -d 选项后面的位吗?

答案1

Yes 字符可以按词法排列在 2 和 q 之间。执行操作ls /bin,您会看到数字位于字母之前。事实上,您可以ls /bin/[2-q]*亲眼看看会发生什么。

“C”语言环境中的词法排序是按 ASCII 值进行的,因此“2”是十进制的 32,“q”是 71。执行 aman ascii查看整个 ASCII 表。

也许您想问如果您指定非法的字典范围?你可以尝试:

% ls /bin/[q-2]*
ls: 无法访问 /bin/[q-2]*: 没有这样的文件或目录

当然,您的 shell 正在扩展该模式(也称为“文件名 GLOB 扩展”),因此您看到的错误可能取决于您的 shell 和 shell 选项。在我的例子中,我使用zsh并设置了zsh选项来传递不能直接通过 GLOB 扩展到正在调用的命令的模式,而不是生成会中止命令执行的 shell 错误。

相关内容