Что происходит, это то, что Bash впервые расширяется *. DJVU {,. BK}
в *. DJVU
* .djvu.bk
, а затем делает глобус-расширение на тех. Это объяснило бы
Что вы наблюдаете: в вашем случае *. DJVU
, соответствует существующему файлу,
Скажем foo.djvu
и расширяется в это, но *. djvu.bk
совпадает с файлом,
И таким образом расширяется как сама, *. djvu.bk
.
Орден расширения указывается в документации Bash:
The order of expansions is: brace expansion, tilde expansion, parame‐
ter, variable and arithmetic expansion and command substitution (done
in a left-to-right fashion), word splitting, and pathname expansion.
Я бы предложил перезаписывать команду вашей копии как:
for f in *.djvu; do cp -- "$f" "$f".bk; done
или, возможно, чтобы избежать синтаксического накладного расхода явного цикла для цикла:
parallel -j1 cp -- {} {}.bk ::: *.djvu
(по второму мыслям ... Это на самом деле не намного короче.)
Чтобы ответить на ваш под сомнение: «Как его можно расширить», можно использовать
подделка (пример в каталоге, содержащий только foo.djvu
и
BAR.DJVU
):
$ echo $(echo *.djvu){,.bk}
bar.djvu foo.djvu bar.djvu foo.djvu.bk
Но это не так безопасное решение, как и для петли или параллельного вызова над; Это сломается на именах файлов, содержащих белое пространство.
Раствор состоял в том, что служба FTP не была на самом деле навсегда добавлена в брандмауэр, просто используя следующую линию
firewall-cmd --permanent --add-service=ftp
и после этого с
firewall-cmd --reload