我遇到过这个问题试图寻找一种在 bash 中内联扩展我的 glob 模式的方法。但就我而言,模式包含一些字符类。
假设我有 3 个文件:-abc
bbc
1bc
当我输入:
$> somecommand [[:alpha:]]bc
我想知道是否有任何组合键可以将我的命令内联扩展为:
$> somecommand abc bbc
我尝试过Ctrl+X
*
按键顺序,但没有成功。它似乎仅适用于简单的全局模式,但当模式包含某些字符类时无法扩展,例如[[:alpha:]]
答案1
这是因为 是被视为单词完成的单词分隔:
符的字符列表(在 shell 变量中公开)。readline
bash
$COMP_WORDBREAKS
后:
COMP_WORDBREAKS=${COMP_WORDBREAKS/:}
:
(从 中删除$COMP_WORDBREAKS
),Ctrl+X*应该可以。
有人可能会争辩说,:
由于它在字符类中使用,所以一开始就不应该出现在该列表中,但我认为其基本原理是您希望能够对以下内容使用完成功能:
路径=~/bin:/usr/locTab
而且这个机制太粗糙了(你会注意到,即使你从 中删除, Ctrl+ X*on'a'*
也不起作用),无法容纳两者,所以这是一个折衷方案。请参阅,一个具有更高级编辑功能的 shell,适用于此处的两种情况。'
$COMP_WORDBREAKS
zsh