Tar komutunda -f parametresi ne yapar


19

Kullanırken tarher zaman -fparametrelere dahil ama neden olduğu hakkında hiçbir fikrim yok.

Adamı aradım ve şöyle dedi;

-f, --file [HOSTNAME:]F

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

Ama dürüst olmak gerekirse bunun ne anlama geldiğini bilmiyorum. Birisi ona ışık tutabilir mi?

Yanıtlar:


20

-fSeçenek söyler tarÇünkü eğer bir sonraki argüman dosya arşivinin adı veya standart çıktı olduğuna -.


Ah, şerefe! Ben dosya adının zaten görünmesi gerektiğini düşündüm, bu yüzden bu -f daha özel bir şey yapıyordu!
Toby

6
@Toby: Bunun tarihsel nedenlerden dolayı olduğundan şüpheleniyorum. "tar", "teyp arşivi" nin kısaltmasıdır ve muhtemelen orijinal sürümlerde, insanların çoğu zaman arşivler için disk dosyaları kullanmasını öngörmüyordu.
David Thornley

8

Oldukça basit. -fParametreyi atlarsanız , çıktı stdout'a geçirilir:

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$ 

...ne dağınıklık!

-f-Parametre (siz alıntı gibi) bir dosya adı (ve isteğe bağlı bir hostname), dolayısıyla ondan sonra ilk argüman çıktı dosya adı bekler:

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 parametresine basarsanız, çıkış stdout'a geçirilir . Bu GNU katranı için geçerlidir, ancak Solaris'te varsayılanın bir teyp cihazı ( /dev/rmt0veya bunun gibi bir şey) olduğunu hatırlıyorum .
Cristian Ciupitu

* atlayın ("ezin" değil)
Bay Ethernet

1
GNU bile tarartık belgelenmeyen TAPEdeğişkeni onurlandırıyor . Örneğin, deneyin TAPE=/tmp/tape.tar tar cv /etc/h*ve ardından ls -l /tmp/tape.tar.
roaima

2

Üzerinde çalışacağınız dosyayı veya cihazı belirlemenizi sağlar. Sağlanan diğer bayraklara bağlı olarak onlardan bir şeyler oluşturun, güncelleyin veya çıkarın. Örneğin:

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

# Extract the tar file.
tar -xvf filename.tar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.