我在远程 centos 机器上安装了 bash 4.1.2。
当使用我最喜欢的
rm !(*keyword)
我有
bash: !: event not found
我尝试升级它的 bash,但似乎升级后该版本仍然存在。
相同的代码在我的本地 Ubuntu 机器上的 bash 4.3.11 上运行良好。
如何在这个 Bash 版本(4.1.2)中使用该命令?
答案1
所以我只给出问题的答案。extglob
除了历史扩展语法之外,您还需要启用bash 来识别扩展模式。
shopt -s extglob
rm !(*keyword)
shopt -s extglob
还启用case
和上的扩展模式匹配,[[ ]]
但它已经是启动 Bash 4.1 时的默认行为[[ ]]
,无论启用或不启用该选项,扩展模式都已被识别。
作为参考,请参阅 Bash 手册 模式匹配。