Шаблон Bash Glob расширяется с использованием удаленных данных - PullRequest
0 голосов
/ 23 мая 2018

Я сделал это по ошибке:

s3cmd del s3://mybucket/*

Но ... это работает :

...
delete: 's3://mybucket/file0080.bin'
delete: 's3://mybucket/file0081.bin'
delete: 's3://mybucket/file0082.bin'
...

Я сбит с толку.Обычно * расширяется оболочкой (Bash), используя информацию, доступную в localhost.

Как / почему расширение работает против s3 корзины?

(Это шаблон без кавычек)

1 Ответ

0 голосов
/ 23 мая 2018

Если глобус не совпадает с чем-либо, он останется как есть (если вы не установите опцию nullglob в Bash), со звездочкой в ​​этом случае, и s3cmd del, очевидно, понимаетэто.

Конечно, не стоит полагаться на это поведение, поскольку если вдруг возникнет локальный файл, который соответствует глобу, он (вероятно) перестанет работать.Цитировать глобус (то есть делать его , а не глобусом) - это хорошая привычка.

Другой вариант - установить параметр nullglob (shopt -s nullglob) для создания несоответствующих глобусов.полностью уйдем.

Чтобы увидеть, как расширяется глобус и как выглядит последняя команда, вы можете запустить set -x в Bash перед его запуском, что заставит Bash распечатать каждую (расширенную) команду перед запуском (set +x чтобы выключить его).

...