停止bash尝试显示所有可能的结果,并在发现不明确的结果时自动完成

时间:2018-07-16 06:17:23

标签: bash

这是我的.inputrc

  9 set show-all-if-unmodified on
 10 set menu-complete-display-prefix on
 11 #set completion-ignore-case on
 12 set disable-completion on

1)我如何停止bash尝试显示所有可能的结果,而只列出与ls相同的结果?

当前行为:

[11:56:33dev@srv:~/test/config$ [Tab]
Display all 1643 possibilities? (y or n)

所需行为:

[11:39:07]dev@srv:~/test/config$ ls[Tab] a.ini config.ini environment.ini mappings.csv market.ini trace.ini

2)当发现结果不明确时,如何停止bash自动完成,而仅显示可能结果的列表?

当前行为:

[12:04:50]dev@srv:~/test/config$ ./ma[Tab]
mappings.csv  market.ini
[12:04:50]dev@srv:~/test/config$ ./mappings.csv

所需行为:

[12:04:50]dev@srv:~/test/config$ ./ma[Tab]
mappings.csv  market.ini
[12:04:50]dev@srv:~/test/config$ ./ma

1 个答案:

答案 0 :(得分:0)

快速浏览Bash Reference Manual之后,要解决第一个问题,请尝试以下操作:

set completion-query-items -1
set page-completions off
  

completion-query-items

     

确定用户何时处于的可能完成的次数   问是否应显示可能性列表。一种   负值表示Readline永远不要问。


第二个问题(因为您正在使用./)实际上可能是其中一个文件被标记为可执行文件,而第二个文件则未被标记为可执行文件。看看这个片段:

$ touch foo foobar
$ ./fo<TAB>               # neither file is executable so nothing is completed
$ chmod +x foo
$ ./fo<TAB>                  
$ ./foo                   # foo is the only file executable and is completed
$ chmod +x foobar
$ ./foo<TAB>                 
./foo ./foobar            # both files are executable and the completion is now ambiguous

尝试执行cat ma<TAB>,以查看行为是否符合预期。