#1 楼
为了使bash
对当前用户不区分大小写:在终端中运行以下shell脚本:
# If ~/.inputrc doesn't exist yet: First include the original /etc/inputrc
# so it won't get overriden
if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi
# Add shell-option to ~/.inputrc to enable case-insensitive tab completion
echo 'set completion-ignore-case On' >> ~/.inputrc
启动新的外壳程序(重新打开终端)。
要在系统范围内进行更改:
# add option to /etc/inputrc to enable case-insensitive tab completion for all users
echo 'set completion-ignore-case On' >> /etc/inputrc
# you may have to use this instead if you are not a superuser:
echo 'set completion-ignore-case On' | sudo tee -a /etc/inputrc
有关详细信息,请参见
man bash
。是的,它是一个很长的页面,但是bash是一个有点复杂的程序,如果您只想在该页面上搜索“不区分大小写”,请转到相关部分。人们通常一次学习bash一个选项,或者一次学习一个bash脚本,并且掌握所有细微差别需要很长时间。您的兴趣可能有所不同。评论
谢谢。我感谢特定于用户/非管理员的解决方案。回声线似乎已经起作用,但是现在我似乎已经失去了使用Ctrl-Left / Right移动光标的功能。另外,>>比>更安全吗?
–mwfearnley
2011-12-12在6:27
总的来说>>会更安全,我的错误是,我假设您没有〜/ .inputrc。我还设置了noclobber =)请确定为什么箭头键不起作用,我无法复制它。您可以删除〜/ .inputrc并启动一个新的shell。
–豹
2011-12-12 6:30
是的,如果我删除它,它将再次起作用。.根据linuxfromscratch.org/blfs/view/5.1/postlfs/inputrc.html,新的inputrc可能会覆盖全局的输入法吗?
–mwfearnley
2011-12-12 7:00
天哪,我将其复制到/ etc / inputrc中,再也无法输入“ i”,当我输入“ e”时,它只是向控制台发送垃圾邮件“ ssssssssss [..]”。更好地使用@ emtin4的解决方案
–卢卡·斯蒂布(Luca Steeb)
16-3-31在23:49
@LucaSteeb我也打过这个,但后来意识到整个块不应该放在您的.inputrc中,而是键入一次。 〜..inputrc文件中应该只包含$ include / etc / inputrc并设置completion-ignore-case on。
–克里斯
18年1月8日在19:32
#2 楼
打开终端,然后键入以下命令:echo set completion-ignore-case on | sudo tee -a /etc/inputrc
输入密码。重新启动终端。
如果要删除不区分大小写的字母,只需删除
set completion-ignore-case
行即可编辑/ etc / inputrc文件。就这样。
评论
好的,我为您澄清了。学习bash需要花一些时间,但要继续探索,阅读和询问。 linuxcommand.org是一个受欢迎的开始;)
–豹
2011年12月14日下午16:46
如果有一个以上的用户,这将全部更改它,这可能是或可能不是所需的行为
–沃尔特·特罗斯(Walter Tross)
15年6月19日在17:35
到目前为止,这里最直接,最简单的答案
–workabyte
16 Jun 30'21:31
简单清晰的答案
– er
'18 Sep 2'在7:29
#3 楼
我知道这个问题很老,但是除非您缺少某些东西,否则如果您使用bash,我想我有一个非常简单的解决方案。echo "bind 'set completion-ignore-case on'" >> ~/.bashrc
或者只需使用您喜欢的文本编辑器添加该行即可。重新开始您的bash会话并享受。
评论
好吧,您缺少了一些东西:〜/ .inputrc由readline读取,这是bash用于提供此完成的内容。 Readline也被其他程序使用,因此,对于一般设置,建议使用〜/ .inputrc更好的答案。
–muru
16年1月31日,下午2:50
感谢您的建议,它教给了我更多的知识,但是我不得不说,它似乎并没有比我接受的简单,它只是使用了另一行来确保新文件不会使旧文件无效。
–mwfearnley
16年2月1日在20:52
完善。好,唯一要记住的是,绑定“ setcomplete-ignore-case on”应该放在.bashrc的新行中
–Vishrant
18年8月18日在23:20
谢谢!在公共系统中使用bind将更容易执行,而不是修改任何其他文件(〜/ .inputrc)。
–马斯洛
20 Nov 17 '13:59
#4 楼
您可以通过为GNUreadline
设置一个配置变量来完成此操作,该变量将在交互式shell中处理输入。所需的变量是
completion-ignore-case
,可以在您的bash会话中直接使用以下命令进行设置:bind "set completion-ignore-case on"
通过将
set completion-ignore-case on
放入用户的~/.inputrc
文件或系统/etc/inputrc
中,可以为以后的所有bash会话启用它,以为所有用户启用它。这是readline的初始化文件。(注意~/.inputrc
可能不存在,您必须创建它,这将覆盖/etc/inputrc
的系统副本。它配置了许多有用的键映射,例如Ctrl-Left
/ Right
。解决此问题的方法是将
$include /etc/inputrc
行放在~/.inputrc
的顶部,例如:$include /etc/inputrc
set completion-ignore-case on
然后重新启动bash或重新加载inputrc,例如使用Ctrl + x ,Ctrl + r。)
有关readline和inputrc的更多信息,请参见
man bash
和man 3 readline
。
评论
很好的问题。作为一种可用性工具,在完成事物命名时,制表符补全应该不像一般的计算机系统那么严格。