我在这里发帖是因为我误解了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?有什么我应该知道的,还是只是未定义的行为?
答案 0 :(得分:1)
没有任何内容与[v-t]
匹配,因为v
和t
之间没有字符。因此,[!cv-to]
相当于[!co]
。
请尝试[t-v]
。