在 tar 中使用 -f 的理由是什么

在 tar 中使用 -f 的理由是什么

man tar

-f, --file ARCHIVE
使用归档文件或设备 ARCHIVE

请考虑:

tar -zxvf myFile.tar.gz

据我了解,z意味着“gzipped tarball”,x意味着“提取”,v意味着“详细输出”,但f我不确定。

如果我们已经给出了文件名myFile.tar.gz,为什么还f需要参数?

答案1

这是您用来指定要使用的存档的实际路径名的选项,无论是从中提取还是创建或附加到等等。如果您不使用-f archivename,不同的实现tar将表现不同(有些可能会尝试使用默认设备/dev、标准输入或输出流或环境变量指定的文件/设备)。

在您引用的命令行中,

tar -zxvf myFile.tar.gz

这与以下相同

tar -z -x -v -f myFile.tar.gz

您可以使用此选项作为myFile.tar.gz选项参数来指定您想要从当前目录中的特定文件中提取。

请查阅您系统上的手册tar,了解该实用程序将使用什么数据流或设备,如果您使用该-f选项。

tar例如,GNU实现有一个--show-defaults选项将显示 所使用的默认选项tar,并且这可能会包含该-f选项(可以通过设置TAPE环境变量来覆盖此默认选项)。

答案2

所以还有很多其他情况你需要f选项。

-F 档案

      使用档案变量作为要读取或写入的存档。如果未指定此标志,该tar命令将使用与系统相关的默认文件名,格式为/dev/rmt0.如果档案指定的变量是-(减号),该tar命令写入标准输出或从标准输入读取。如果写入标准输出,则-c必须使用该标志。

tar 手册页

示例: 要从磁带设备/tmp上的归档文件中提取目录中的所有文件/dev/rmt2并使用提取时间作为修改时间,请输入:

tar -xm -f/dev/rmt2 /tmp

要创建包含该文件的新存档文件file1并将存档文件传递给dd要写入/dev/rmt1设备的命令,请输入:

tar -cvf - file1 | dd of=/dev/rmt1 conv=sync

要将输入列表文件中列出的所有目录和完整文件名存档infile到 中ar.tar,请输入:

tar cvfL ar.tar infile

其中infile包含要归档的文件的路径名。要将输入列表文件中列出的目录中的文件归档infile到 中ar.tar,请输入:

tar cvRfL ar.tar infile

相关内容