命令中的“*(1)*”是什么意思?

命令中的“*(1)*”是什么意思?

为什么使用 of*(1)*会删除目录中的所有内容?那么如何选择(1)名称中间有的所有文件呢?

使用的命令是rm *(1)*or rm -rf *(1)*(记不太清了)。这是默认的 Ubuntu shell。

答案1

如果您启用了 ksh 样式的扩展 glob,例如extglob在 Bash 中设置,则该模式*(1)*确实会匹配任何文件名。该*(...)语法匹配括号中部分的零个或多个副本,以及任何前导副本(如果有)。然后*匹配其余的。

如果您使用的是类似 POSIX 的 shell没有扩展的 glob,那么这将是一个错误,因为该(运算符不适合那里的语法。

默认情况下,在 zsh 中,我认为这与 相同*1*,即括号仅用于分组。不过,如果您kshglob设置了 shell 选项,那么它会使用 ksh 规则。

我认为最近版本的 Ubuntuextglob在交互式 shell 中默认设置为 Bash。

(1)要匹配中间有文字部分的文件,请引用或转义该部分或至少括号:要么*\(1\)*, 要么*"(1)"*

相关内容