Apa yang dilakukan parameter -f pada perintah tar

19

Saat menggunakan tarsaya selalu memasukkan -fdalam parameter tetapi saya tidak tahu mengapa.

Saya mencari pria itu dan berkata;

-f, --file [HOSTNAME:]F

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

Tapi jujur ​​saja saya tidak tahu apa artinya itu. Adakah yang bisa menjelaskannya?

Toby
sumber

Jawaban:

20

The -fpilihan mengatakan tarbahwa argumen berikutnya adalah nama file dari arsip, atau output standar jika -.

ddeimeke
sumber
Ah, tepuk tangan! Saya menduga bahwa nama file harus muncul berikutnya jadi ini -f sedang melakukan sesuatu yang lebih istimewa!
Toby
6
@Toby: Saya menduga ini karena alasan historis. "tar" adalah kependekan dari "arsip tape", dan mungkin versi aslinya tidak membayangkan orang menggunakan file disk untuk arsip terlalu sering.
David Thornley
8

Cukup sederhana. Jika Anda menghilangkan -fparameter, output diteruskan ke 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$ 

...berantakan sekali!

The -f-parameter (seperti yang Anda kutip) mengharapkan nama file (dan opsional nama host), maka argumen pertama setelah itu adalah nama file keluaran:

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$ 
gamen
sumber
5
> Jika Anda menekan parameter -f, output dilewatkan ke stdout . Ini benar dengan GNU tar, tetapi saya ingat bahwa pada Solaris defaultnya adalah perangkat tape ( /dev/rmt0atau sesuatu seperti ini).
Cristian Ciupitu
* hilangkan (bukan "oppress")
Mr Ethernet
1
Bahkan GNU tarmenghormati TAPEvariabel yang tidak lagi didokumentasikan . Misalnya, coba TAPE=/tmp/tape.tar tar cv /etc/h*dan kemudian ls -l /tmp/tape.tar.
roaima
2

Ini memungkinkan Anda menentukan file atau perangkat yang akan Anda gunakan. Entah membuat, memperbarui, atau mengekstraksi hal-hal darinya tergantung pada flag lain yang disediakan. Sebagai contoh:

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

# Extract the tar file.
tar -xvf filename.tar
signine
sumber