Що робить параметр -f у команді tar


19

Під час використання tarя завжди включаю -fв параметри, але не маю поняття, чому.

Я підняв погляд на чоловіка, і він сказав;

-f, --file [HOSTNAME:]F

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

Але якщо чесно, я поняття не маю, що це означає. Чи може хтось пролити на це якесь світло?

Відповіді:


20

-fОпція вказує , tarщо наступний аргумент є ім'ям файлу архіву, або стандартний висновок , якщо він -.


Ах, ура! Я припускав, що ім'я файлу все одно повинно з’являтися далі, тому це -f робило щось більш особливе!
Тобі

6
@Toby: Я підозрюю, що це з історичних причин. "tar" - це "архів стрічки", і, мабуть, оригінальні версії не передбачали людей, які часто використовують файли диска для архівів.
Девід Торнлі

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(як ви цитували) очікує ім'я файлу (і необов'язково ім'я хоста), отже, перший аргумент після нього - це вихідний файл файлу:

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, але я пам’ятаю, що для 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.