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

Vih*_*rma 20 bash cd autocomplete case-insensitive

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

现在,我有一些设置可识别目录的拼写错误,但不会自动完成它们.

对于目录拼写错误更正我有这个代码~/.bashrc:

shopt -s cdspell
Run Code Online (Sandbox Code Playgroud)

现在它按以下方式工作,假设我有一个名为"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
Run Code Online (Sandbox Code Playgroud)

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

vickey@home:~$ mkdir Temp
vickey@home:~$ cd temp
Temp
vickey@home:~/Temp$ cd ..
vickey@home:~$ cd te #and tab here
test/   textin/ 
Run Code Online (Sandbox Code Playgroud)

它没有显示Temp为一个选项.反正是否使自动完成不区分大小写?

Arj*_*kar 26

完成是一个特点readline.

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

1)添加到您的~/.bashrc:

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

要么

2)添加到您的/etc/inputrc:

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

笔记:

  • /etc/inputrc,作为@mak注释,影响所有使用的shell readline,而不仅仅是bash.

  • 这将使所有完成不区分大小写.

  • `inputrc`是由使用`readline`的shell使用的,比如`bash`,`dash`和`zsh`(而不是`ksh`,`tcsh`等).如果你想影响所有shell的行为(不仅仅是`bash`),你需要编辑`inputrc`.您也可以在本地编辑`〜/ .inputrc`,这样您就不必在全局`/ etc/inputrc`中进行更改..否则,很好的答案! (2认同)