调整Bash'cd'和TAB完成以识别拼写错误

时间:2012-04-05 07:12:50

标签: bash autocomplete case-insensitive cd

我正在寻找cd命令的调整,以便识别目录的拼写错误并自动完成类似的目录名称。

目前,我的设置可以识别目录的拼写错误,但不会自动完成它们。

对于目录拼写错误更正,我在~/.bashrc

中有此代码
shopt -s cdspell

现在它按以下方式工作,假设我有一个名为“trash”的目录

vickey@home:~$ cd tras
trash
vickey@home:~/trash$ cd ..
vickey@home:~$ cd trasx
trash
vickey@home:~/trash$ pwd
/home/vickey/trash
vickey@home:~/trash$ 


vickey@home:~$ cd Trash
trash
vickey@home:~/trash$ pwd
/home/vickey/trash

但我遇到的问题是假设我创建一个名为Temp的目录并执行类似

的操作
vickey@home:~$ mkdir Temp
vickey@home:~$ cd temp
Temp
vickey@home:~/Temp$ cd ..
vickey@home:~$ cd te #and tab here
test/   textin/ 

它没有显示Temp作为选项。反正是否使自动完成不敏感?

1 个答案:

答案 0 :(得分:26)

完成是readline的一项功能。

您可以通过以下方式启用不区分大小写的完成:

1)添加到~/.bashrc

bind 'set completion-ignore-case on'

OR

2)添加到/etc/inputrc

set completion-ignore-case on

注意:

  • /etc/inputrc,正如@mak评论一样,会影响使用readline的所有shell,而不仅仅是bash

  • 这会使所有完成不区分大小写。