bash 提示符中自动完成文件名

bash 提示符中自动完成文件名

我通常在文件或目录名前加上日期,类似于2014-04-20 file_name.doc.

因此,在一个文件夹中通常有一堆以日期开头的文件和目录。

但是,当从命令行(在我的情况下是 bash)访问这些文件夹时,这有点烦人,因为我必须输入所有日期,然后才点击TAB自动完成。

我想要的是仅键入文件名的一部分,然后在点击TAB系统后应在提示符下输入全名。

有什么解决办法吗?

答案1

完成通配符模式:

ls *文件_n *Tab

如果模式与多个文件匹配,系统将提示您进行选择,或者列表将插入到命令行中,具体取决于您的完成选项。如果您想取消该操作并输入更多字符来限制匹配,请撤消完成 ( Ctrl+ _)。

如果您使用上下文相关的完成,Tab默认情况下不会扩展通配符(可能有一个选项可以设置来纠正它),但是Ctrl+ X *

答案2

您可以使用它complete来执行您想要的操作(安装适当的软件包后,现有的完成脚本位于 debian 下的 /etc/bash_completion.d 中)

你可以检查 apache2.2-common 有一个基本的例子。

https://www.gnu.org/software/bash/manual/html_node/Programmable-Completion-Builtins.html

答案3

如果您使用\eg( glob-complete-word),则无需键入第二个星号,或者您可以键入*file_n\eg代替*file_n*<tab>

如果有多个文件与该模式匹配,您可以插入第一个匹配项menu-complete或最后一个匹配项menu-complete-backward。例如,如果您添加

"\et": menu-complete
"\er": menu-complete-backward

~/.inputrc*file_n*\et完成第一场比赛并*file_n*\er完成最后一场比赛。

相关内容