![Unix:如果我输入 ls -d [2-q]* 会发生什么](https://linux22.com/image/56632/Unix%EF%BC%9A%E5%A6%82%E6%9E%9C%E6%88%91%E8%BE%93%E5%85%A5%20ls%20-d%20%5B2-q%5D*%20%E4%BC%9A%E5%8F%91%E7%94%9F%E4%BB%80%E4%B9%88.png)
因为无法在 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 错误。