【发布时间】:2012-05-09 23:40:41
【问题描述】:
有没有办法指定特定命令不区分大小写,而无需全局启用不区分大小写(至少对于该 shell)?
在我的特殊情况下,我有一个小应用程序,可以让我通过命令行访问电子邮件地址数据库,所以我输入:
db get email john smith
它会返回 John Smith 的电子邮件地址。所以我设法在应用程序内部启用了完成功能:设置
COMPREPLY=($(compgen -W "$(db --complete $COMP_CWORD "$COMP_WORDS[@]"}")" -- ${COMP_WORDS[COMP_CWORD]}))
允许我使用制表符完成get 和email。但是,如果我随后键入j<tab>,它会拒绝,因为在电子邮件数据库中,它已正确大写。无论如何,我想让 bash 完成这项工作。 (如果我使用大写字母J,它可以工作。)
如果不这样做,我想我可以让我的--complete 选项通过匹配输入来更改其回复的大小写,但理想情况下,命令行会尽可能匹配数据库。
请注意,当我使用 readline 时,我在应用程序中进行了这项工作,它只是与 bash 交互,这似乎是一个问题。
【问题讨论】:
标签: bash case-insensitive tab-completion