如何在 bash 中内联展开通配符?

如何在 bash 中内联展开通配符?

我记得 bash 可以执行以下操作:

假设当前目录下有3个文件:a,b,c,当我输入:

$> somecommand *

然后按一个键或组合键或一个键序列,通配符 * 在线扩展为:

$> somecommand a b c

但我不记得也无法用谷歌搜索出按键顺序!帮助!

答案1

如果不是,您将需要绑定glob-expand-word到按键序列。通常通过添加类似以下内容:

"\C-x*": glob-expand-word

.inputrc

要检查当前状态问题,例如:

bind -P | grep glob-expand-word

结果可能是:

glob-expand-word can be found on "\C-x*".

这意味着:

Ctrl-x*

这也最有可能起作用:

Ctrl-xCtrl-*


请参阅bind -P手册了解其他细节。

答案2

看来您正在寻找列表完成。在手册页中bash

 COMP_TYPE
     Set to an integer value corresponding to the type of completion
     attempted  that caused a completion function to be called: TAB,
     for normal completion, ?, for listing completions after succes‐
     sive  tabs, !, for listing alternatives on partial word comple‐
     tion, @, to list completions if the word is not unmodified,  or
     %,  for  menu  completion.   This variable is available only in
     shell functions and external commands invoked by  the  program‐
     mable completion facilities

因此,这取决于某些命令的完成函数如何完成。

答案3

set -o vi如果您在 bash 中使用,则Ctrl-X*不起作用。

set -o vi模式下你需要使用Esc*

相关内容