如何内联扩展包含字符类的全局模式?

如何内联扩展包含字符类的全局模式?

我遇到过这个问题试图寻找一种在 bash 中内联扩展我的 glob 模式的方法。但就我而言,模式包含一些字符类。

假设我有 3 个文件:-abc bbc 1bc

当我输入:

$> somecommand [[:alpha:]]bc

我想知道是否有任何组合键可以将我的命令内联扩展为:

$> somecommand abc bbc

我尝试过Ctrl+X *按键顺序,但没有成功。它似乎仅适用于简单的全局模式,但当模式包含某些字符类时无法扩展,例如[[:alpha:]]

答案1

这是因为 是被视为单词完成的单词分隔:符的字符列表(在 shell 变量中公开)。readlinebash$COMP_WORDBREAKS

后:

COMP_WORDBREAKS=${COMP_WORDBREAKS/:}

:(从 中删除$COMP_WORDBREAKS),Ctrl+X*应该可以。

有人可能会争辩说,:由于它在字符类中使用,所以一开始就不应该出现在该列表中,但我认为其基本原理是您希望能够对以下内容使用完成功能:

路径=~/bin:/usr/locTab

而且这个机制太粗糙了(你会注意到,即使你从 中删除, Ctrl+ X*on'a'*也不起作用),无法容纳两者,所以这是一个折衷方案。请参阅,一个具有更高级编辑功能的 shell,适用于此处的两种情况。'$COMP_WORDBREAKSzsh

相关内容