$ find playground -name "file_a" | tar cf - --files-from=- | gzip > playground.tgz
不明白为什么我们-
同时使用cf -
两者--files-from=-
不是已经-
将所有标准输出重定向到tar cf
了吗?
答案1
使用相同的-
符号可能会令人困惑,但在每种情况下它都有不同的含义。
当与cf -
,这意味着不是命名要写入的文件,tar 应该将存档写入标准输出:
如果使用“-”作为存档名称,tar 会从标准输入读取存档(列出或提取文件时),或将其写入标准输出(创建档案时)。
当与--files-from=-
意味着获取要从给定文件名中提取或创建的名称, 和:
如果您给出一个破折号作为“--files-from”的文件名(即,您指定 --files-from=- 或 -T -),则文件名将从以下位置读取标准输入。
(我强调阅读标准输入)。