-f参数在tar命令中做什么


19

使用时,tar我总是-f将参数包括在内,但我不知道为什么。

我抬头看那个人,说:

-f, --file [HOSTNAME:]F

use archive file or device F (default
"-", meaning stdin/stdout)

但是说实话,我不知道那意味着什么。任何人都可以阐明它吗?

Answers:


20

-f选项tar表明下一个参数是存档的文件名,如果是,则为标准输出-


啊,干杯!我认为文件名无论如何都必须再次出现,所以这个-f做了一些更特别的事情!
托比

6
@Toby:我怀疑这是出于历史原因。“ tar”是“ tape存档”的缩写,并且大概是原始版本没有设想人们经常使用磁盘文件来存档。
David Thornley,2010年

8

非常简单。如果省略该-f参数,则输出将传递到stdout:

gammy@denice:/tmp/demo$ tar -c a b c
a0000644000175000017500000000000011435437117010223 0ustar  gammygammyb0000644000175000017500000000000011435437117010224 0ustar  gammygammyc0000644000175000017500000000000011435437117010225 0ustar  gammygammygammy@denice:/tmp/demo$ ls
a  b  c
gammy@denice:/tmp/demo$ 

...真是一团糟!

所述-f-parameter(如你引述)期望的文件名(和任选的主机名),因此之后它的第一个参数是输出文件名:

gammy@denice:/tmp/demo$ tar -cf output.tar a b c
gammy@denice:/tmp/demo$ ls
a  b  c  output.tar
gammy@denice:/tmp/demo$ 

5
> 如果您按下-f参数,则输出将传递到stdout。对于GNU tar,这是正确的,但我记得在Solaris上,默认值为磁带设备(/dev/rmt0或类似的东西)。
克里斯蒂安·丘皮图

*省略(不是“压迫”)
以太网先生

1
甚至GNU都tar兑现了不再记录的TAPE变量。例如,尝试TAPE=/tmp/tape.tar tar cv /etc/h*然后ls -l /tmp/tape.tar
roaima

2

它使您可以指定要使用的文件或设备。根据提供的其他标志,从中创建,更新或提取内容。例如:

# Create a tar file with the contents of somepath/
tar -cvf filename.tar somepath/

# Extract the tar file.
tar -xvf filename.tar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.