我可以更改 shell 的通配符吗?

luc*_*cho 6 shell bash wildcards

这三个通配符在Unix外壳是*?[]。我可以更改此类通配符的设置吗?例如,符号或他们的行为?

为了自己回答这个问题,我搜索了“创建新的通配符外壳”和“更改通配符外壳设置”,但找不到任何相关内容。这些设置是否“硬编码”到外壳中?

PS:我想我指的是 bash,这是我使用的默认值 (Xubuntu)。也许其他 shell,如 tcsh、ksh、fish 等更可定制?

Wil*_*ard 3

不,你不能。除非重新编译 Bash。但是,更改像 glob 字符这样基本且普遍存在的东西会破坏与绝大多数 Bash 脚本的兼容性,因此如果您这样做,请不要将生成的二进制文件称为“bash”。

zsh其通配符具有更大的灵活性,但即便如此,您也不能任意定义自己的语法。

最接近您想要的东西(可重新定义的模式匹配语言)不在任何 shell 中,但听起来很像 Perl 6。请注意:这适合胆小的人。