bash$ compgen -d -- '~'
产生空输出。
bash$ compgen -d -- '~mi'
还会产生空输出。
bash$ compgen -d -- '~mice/'
~mice/.pulse
~mice/.mozilla
~mice/Pictures
可以。
bash$ compgen -d -- '~mice/Do'
~mice/Downloads
~mice/Documents
也行。
compgen 中是否有 bug,导致“~”和“~mi”输出为空?如果是 bug,修复后会破坏某些东西吗?
答案1
我怀疑前两个需要先作为波浪符号扩展完成,然后才能作为目录名完成。
bash$ compgen -u -- '~mi'
~mice
但是,您不能在同一个调用中同时指定-d
和。-u
compgen
请注意以下几点:
bash$ compgen -d -- '~/' # Like #1, but with trailing /: it works
bash$ compgen -d -- '~mice' # Like #3, but w/o trailing /: it doesn't work
因此,不完整的波浪号扩展将不会通过 扩展到正确的目录-d
,“完整”意味着包括终止路径分隔符。
它可能值得提交错误报告,尽管我怀疑它能按预期工作。至少,您可能会对当前行为得到更好的解释。