Bash 中不区分大小写的制表符补全

Jef*_*rth 154 bash shell command-line macos

有没有办法让 Bash 选项卡不区分大小写?

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

我使用的是 Mac OS X 10.6

Joh*_*n T 186

更新文本/etc/inputrc以包括

设置完成忽略案例

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

  • “以及” - `/etc/inputrc` 或 `~/.inputrc` 或由 `INPUTRC` 指定的文件是它唯一可以去的地方。在 Bash 提示符下输入将不起作用。 (33认同)
  • @DennisWilliamson:您可以从命令行执行`bind“set completion-ignore-case on”`;因为,我相信,只有那个终端会话 (14认同)
  • `^X ^R` 重新加载 `inputrc` (11认同)

mkl*_*nt0 119

事后重组,以对比使用[.]inputrc.bash_profile.
提示underscore_d寻求帮助。

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

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


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

  • 一个/etc/inputrc文件(适用于系统范围,修改需要sudo
  • 和/或~/.inputrc文件(特定于用户)

    和/或

您计划广泛自定义 readline 库和/或希望在脚本调用时使自定义也对脚本有效read -e

添加行

set completion-ignore-case on
Run Code Online (Sandbox Code Playgroud)

任何文件,这取决于你是否要设置是有效的为所有用户或当前用户(创建文件,如果需要的话)。

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

set show-all-if-ambiguous on
Run Code Online (Sandbox Code Playgroud)

这使得在有多个匹配项时不必按 Tab两次


选项 B:或者,您可以将 Readline 命令添加到~/.bash_profileOS X(或~/.bashrcLinux)上的用户特定文件中,方法是将它们作为单个参数传递给bindbuiltin

bind "set completion-ignore-case on"
bind "set show-all-if-ambiguous on"
Run Code Online (Sandbox Code Playgroud)

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

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

  • show-all-if-ambiguous 太好了!我经常想知道为什么他们让我两次 tab 来执行那个动作。数以千计的击键保存在我的未来!谢谢! (12认同)
  • 太棒了,它甚至适用于 `cd` 命令。这解决了 [这个问题](http://superuser.com/questions/527559/how-to-make-cd-arguments-case-insensitive) 并且也将为我节省数千次击键。:) (4认同)