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

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

unix shell 中的三个通配符是*?[]。我可以更改此类通配符的设置吗?例如,符号或他们的行为?

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

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

答案1

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

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

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

相关内容