例如,在以下命令中,tar -xzv
有效但tar -xzvf
失败:
wget ${target_url} -O - | tar -xzv --strip-components 1 -C ${web_application_root}/${domain}
据我了解,我将数据流下载到 STDOUT,wget
并将其作为 STDIN 通过管道传输,以tar
使用该数据创建(覆盖)目录文件。
我知道tar -xzvf
失败是因为未存储到文件中的数据流不是 shell 的文件;所以告诉 tar -f
“我使用一个文件”会破坏该操作。
我有一个没有注意到的情况-f
,还有一个我忘记在管道时应该将其移除的情况;这些情况的发生很可能是因为我几乎总是使用-f
with tar
。
是否有一个 tar 版本,或者是否有一个调整来制作 tar,忽略-f
数据流未存储到文件的情况?
相关:
1.在 tar 中使用 -f 的理由是什么
2.tar 提取时不带 -f 选项
3.将流从 wget 传送到 tar 并将其提取到特定位置失败
答案1
-f
不会改变tar
关于流或文件或类似内容的行为;它指定要使用的存档的名称。
我不知道有任何变体tar
可以处理选项没有参数的情况-f
,也不知道有任何可靠的方法可以做到这一点。作为CAS说,你需要记住 总是-f
带有一个参数。减少错误发生的一种方法是始终将其分离出来;f
在诸如 的序列中,比-xzvf
单独的更容易错过选项-f
。
如有必要,最好始终使用-f
, ;这避免了依赖于没有选项-
的行为(这取决于编译时选项和变量)。解决问题的一种方法是始终从行动之后开始,并在适当时进行更改。tar
-f
TAPE
-f -
-