我通常在文件或目录名前加上日期,类似于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
完成最后一场比赛。