使用远程数据扩展Bash glob模式

时间:2018-05-23 12:08:10

标签: bash ubuntu s3cmd

我错误地做了这个:

s3cmd del s3://mybucket/*

但是...... 它正在运作

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

我很困惑。通常*由shell(Bash)展开,使用localhost中提供的信息。

如何/为什么扩展适用于s3存储桶?

(这是一个不带引号的glob模式)

1 个答案:

答案 0 :(得分:3)

如果glob不匹配任何内容,它将保持原样(除非你在Bash中设置nullglob选项),在这种情况下带有星号,而s3cmd del显然理解这一点。

当然,依赖这种行为并不是一个好主意,因为如果突然存在一个匹配glob的本地文件,它(可能)会停止工作。引用glob(即使它一个glob)是一个好习惯。

另一种选择是设置nullglob选项(shopt -s nullglob)以使不匹配的全局完全消失。

要查看glob如何扩展以及最终命令的外观,您可以在运行之前在Bash中运行set -x,这使得Bash在运行之前打印每个(扩展)命令(set +x转向它关闭)。