如果有多个文件/目录,如何使终端自动完成?

如果我有几个目录,比如:

afoo abar 

有时我的终端会在按Tab键时拒绝自动完成(例如“cd a”然后是tab),而是打印目录列表。 有时甚至会发出嘈杂,恼人的声音。 知道如何在这种情况下使其自动完成吗? 例如,它可以先显示abar,然后再显示afoo,如果我再次按Tab键。 我在Windows中看到了这种情况,或者在Ubuntu中看到了一些应用程序

对我来说节省生命的事情就是让bash循环通过可能性而不是显示一个愚蠢的列表。

由于bash使用readline进行自动完成,因此~/.inputrc添加到~/.inputrc

一旦您满意并在下面的解决方案中进行了几天/几周的彻底测试,请将~/.inputrc的相同设置剪切并粘贴 (不要复制!)到/etc/inputrc ,其中包含系统范围的设置,这适用于您系统上的所有用户(包括来宾)。

代码:

 # mappings to have up and down arrow searching through history: "\e[A": history-search-backward "\e[B": history-search-forward # mappings to have left and right arrow go left and right: "\e[C": forward-char "\e[D": backward-char # mapping to have [Tab] and [Shift]+[Tab] to cycle through all the possible completions: "\t": menu-complete "\e[Z": menu-complete-backward 

然后exit您的终端(或像腻子一样的远程终端)并再次打开它…

例子:

  1. 如果有3个文件: file1file2file3 ,则键入:

     ef Tab Tab Tab 

    它将循环通过:

     e file1 e file2 e file3 

    当你想要向后循环时,只需点按Shift + Tab即可

  2. 键入时:

     very-complicated-command with lots of command line parameters 

    下次需要相同的命令时,只需输入:

     very  

    它会为你打字:

     very-complicated-command with lots of command line parameters 

这将为你节省大量的时间! 😉

在第一个标签后,您需要插入更多字母。 所以,如果你输入

 cd a 

并且点击标签你没有得到任何东西,在第二个标签后面(紧随其后)你得到一个以a开头的名字列表然后需要插入一个f让它自动完成余数所以

cd a 选项 选项 f 选项 选项

会导致

 cd afoo