我错误地这样做了:
s3cmd del s3://mybucket/*
但是......它正在工作:
...
delete: 's3://mybucket/file0080.bin'
delete: 's3://mybucket/file0081.bin'
delete: 's3://mybucket/file0082.bin'
...
我很困惑。通常
*
由 shell (Bash
) 扩展,使用 localhost
中提供的信息.扩展如何/为什么对
s3
起作用桶?(这是一个未引用的 glob 模式)
最佳答案
如果 glob 不匹配任何内容,它将保持原样(除非您在 Bash 中设置了 nullglob
选项),在这种情况下带有星号,s3cmd del
显然明白这一点。
当然,依赖这种行为并不是一个好主意,因为如果突然存在与 glob 匹配的本地文件,它将(可能)停止工作。引用 glob(即使其不是 glob)是一个好习惯。
另一个选项是设置 nullglob
选项 ( shopt -s nullglob
) 使不匹配的 glob 完全消失。
要查看 glob 如何扩展以及最终命令的外观,您可以运行 set -x
在 Bash 中运行它,这使得 Bash 在运行之前打印每个(扩展的)命令(set +x
将其关闭)。
关于使用远程数据扩展 Bash glob 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50488022/