有什么方法可以使Bash选项卡不区分大小写吗?

$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.


我正在使用Mac OS X 10.6

#1 楼

更新/etc/inputrc中的文本以包含

set completion-ignore-case on


,然后使用^X ^R重新加载配置。

评论


“同样”-/ etc / inputrc或〜/ .inputrc或INPUTRC指定的文件是它唯一可以使用的位置。在Bash提示符下输入该命令将无效。

–丹尼斯·威廉姆森
2010年1月1日,21:11

哎呀!你是对的 :)

– John T
2010年1月1日于21:18

^ X ^ R重新加载inputrc

–user1686
2010年1月2日,9:37



@DennisWilliamson:您可以从命令行绑定“ setcomplete-ignore-case on”;我认为,这仅用于该终端会议

–粘土桥
2011年10月4日19:45



这就是msysgit所具有的,而MSYS2所缺乏的!在这里我试图在例如/ etc / profile ...

– SamB
15年8月31日在18:01

#2 楼

经过事后观察,进行了重组,以对比使用[.]inputrc.bash_profile的优缺点。
提示要强调下划线的帽子。

注意:Bash中的命令行编辑是由Readline库提供;定制它并非易事,但值得学习;它的功能包括定义用于插入预定义文本片段的自定义键盘快捷键的功能-请参见Bash参考手册中的命令行编辑

要在Bash中始终使制表符完成不区分大小写:


选项A:如果您已经拥有:


/etc/inputrc文件(适用于系统范围,则需要sudo进行修改)

和/或~/.inputrc文件(特定于用户)

和/或


您打算广泛地自定义readline库和/或想要创建自定义脚本在调用read -e时也有效:

将行

set completion-ignore-case on



添加行到两个文件中,具体取决于您是否希望设置为对所有用户或当前用户均有效(必要时创建文件)。

使文件和目录名称的完成更容易的相关命令是:

set show-all-if-ambiguous on


这样就不必再按两次Tab键n不止一个匹配项。


选项B:或者,您可以通过传递Readline命令到OS X(或Linux上的~/.bash_profile)上用户特定的~/.bashrc文件中作为内置bind的单个参数:

bind "set completion-ignore-case on"
bind "set show-all-if-ambiguous on"


请注意,bind / ~/.bash_profile中的~/.bashrc命令优先于/etc/inputrc~/.inputrc中的等效命令。

如上所述,以这种方式定义的Readline配置在调用read -e来激活Readline支持以读取用户输入的脚本中不会生效。

评论


如果模棱两可,则显示所有内容真好!我经常想知道为什么他们让我两次单击以执行该操作。在我的未来节省了成千上万的按键!谢谢!

–user34112
13年9月24日在7:16

太棒了,它甚至适用于cd命令。这解决了这个问题,也将为我节省成千上万的按键。 :)

– Alex Shroyer
14 Mar 27 '14 at 0:08



要点很含糊。但是,既然您说“作为替代”,那么当inputrc文件似乎不需要这样做时,通过绑定执行此操作实际上有任何好处吗?

– underscore_d
2015年10月18日在21:07

@underscore_d:好问题;请参阅我的最新答案。

–mklement0
15-10-18在21:25



太好了,谢谢!在Debian 8.2上,我既没有输入法,也高兴地创建了〜/ .inputrc并添加了这些,以及其他真正有用的指令。我想我们假设所有读者都知道/ etc / inputrc影响其他用户(除非后者覆盖受影响的设置)?就在我们提到警告时;)

– underscore_d
2015年10月18日在22:04

#3 楼

为避免更改所有用户的配置并避免root权限,请使用以下命令:

if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi
echo 'set completion-ignore-case on' >> ~/.inputrc


然后重新登录或重新加载〜/ .inputrc