我错误地做了这个:
s3cmd del s3://mybucket/*
但是...... 它正在运作:
...
delete: 's3://mybucket/file0080.bin'
delete: 's3://mybucket/file0081.bin'
delete: 's3://mybucket/file0082.bin'
...
我很困惑。通常*
由shell(Bash
)展开,使用localhost
中提供的信息。
如何/为什么扩展适用于s3
存储桶?
(这是一个不带引号的glob模式)
答案 0 :(得分:3)
如果glob不匹配任何内容,它将保持原样(除非你在Bash中设置nullglob
选项),在这种情况下带有星号,而s3cmd del
显然理解这一点。
当然,依赖这种行为并不是一个好主意,因为如果突然存在一个匹配glob的本地文件,它(可能)会停止工作。引用glob(即使它不一个glob)是一个好习惯。
另一种选择是设置nullglob
选项(shopt -s nullglob
)以使不匹配的全局完全消失。
要查看glob如何扩展以及最终命令的外观,您可以在运行之前在Bash中运行set -x
,这使得Bash在运行之前打印每个(扩展)命令(set +x
转向它关闭)。