'@ (...)' здесь является частью синтаксиса Bash , соответствующего шаблону . Это «или», оно просто соответствует одному из перечисленных шаблонов, разделенных символами канала.
Начальная черта просто была выведена из выражения; «- @ (a | b | c)» совпадает с «@ (- a | -b | -c)», но короче.
Как указал комментатор (спасибо!), Для работы Bash extglob
необходимо. Это делается так:
shopt -s extglob
Вы можете проверить, включено ли оно, вот так:
shopt extglob