BASH - 带方括号的圆形表达式:[... - ...]

时间:2016-10-06 09:37:09

标签: bash shell unix

我在这里发帖是因为我误解了bash globbing表达式。我阅读了POSIX和这种特定类型表达式的定义(带方括号的那些),在测试时,我做了那个测试:

bash-3.2$ ls
a.out    c.cou    tab_maker.c

bash-3.2$ ls [!c-t]
ls: [!c-t]: No such file or directory

bash-3.2$ ls [!c-t]*
a.out

bash-3.2$ ls [!c-to]*
a.out

bash-3.2$ ls [!cv-to]*
a.out    tab_maker.c

bash-3.2$

我不明白bash如何解释这个命令?当我执行ls [!c-t]*时,bash只捕获a.out(这对我来说是合乎逻辑的),但是为什么它会在最后一次测试中捕获tab_maker.c?有什么我应该知道的,还是只是未定义的行为?

1 个答案:

答案 0 :(得分:1)

没有任何内容与[v-t]匹配,因为vt之间没有字符。因此,[!cv-to]相当于[!co]

请尝试[t-v]