从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