我正在按照指南学习终端命令,并且在以下命令中遇到了使用连字符来引用 stdin 的情况,该命令用于查找目录 Playground 中名为“file-A”的所有文件。我理解它的用法是指 find 命令找到的文件,这些文件当然通过管道传送到 tar 并设置为使用 --files-from= 选项作为文件读取。我不明白它在由 gzip 命令重命名之前定义存档的中间名称的用法。
find ./playground -name 'file-A' | tar -cf - --files-from=- | gzip playground.tgz
stdin 的值不是 stdin 文件中定义的路径列表吗?如果是这样,这怎么能成为可接受的存档名称呢?
谢谢
答案1
我在手册中找不到它tar
。然而,-
工具经常将其用作引用 stdin 或 stdout 的伪文件名。tar
两者都使用 if 。-f -
说输出到stdout
并--files-from=-
说从 获取文件名列表stdin
。 in 和 out 是隐含的,这些选项分别期望输出和输入。
另外:gzip
不是重命名。并且没有临时文件,数据通过管道传递。