Co robi parametr -f w poleceniu tar

19

Podczas używania tarzawsze uwzględniam -fparametry, ale nie mam pojęcia, dlaczego.

Spojrzałam na mężczyznę i powiedział:

-f, --file [HOSTNAME:]F

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

Ale szczerze mówiąc, nie mam pojęcia, co to znaczy. Czy ktoś może rzucić na to jakieś światło?

Toby
źródło

Odpowiedzi:

20

Ta -fopcja informuje, tarże następnym argumentem jest nazwa pliku archiwum lub standardowe wyjście, jeśli tak jest -.

ddeimeke
źródło
Ach, na zdrowie! Przypuszczałem, że nazwa pliku i tak musi się pojawić, więc to -f robiło coś wyjątkowego!
Toby
6
@Toby: Podejrzewam, że dzieje się tak z przyczyn historycznych. „tar” jest skrótem od „archiwum taśm” i prawdopodobnie oryginalne wersje nie wyobrażały sobie ludzi, którzy często używają plików dyskowych do archiwizacji.
David Thornley,
8

Całkiem proste. Jeśli pominięto -fparametr, dane wyjściowe są przekazywane do standardowego wyjścia:

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$ 

...co za bałagan!

Parametr -f(jak cytowałeś) oczekuje nazwy pliku (i opcjonalnie nazwy hosta), stąd pierwszy argument po nim to nazwa pliku wyjściowego:

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
źródło
5
> Jeśli naciśniesz parametr -f, dane wyjściowe są przekazywane do standardowego wyjścia . Tak jest w przypadku tar GNU, ale pamiętam, że w systemie Solaris domyślnie było to urządzenie taśmowe ( /dev/rmt0lub coś w tym rodzaju).
Cristian Ciupitu
* pomiń (nie „uciskaj”)
Pan Ethernet
1
Nawet GNU tarhonoruje nieudokumentowaną TAPEzmienną. Na przykład spróbuj, TAPE=/tmp/tape.tar tar cv /etc/h*a następnie ls -l /tmp/tape.tar.
roaima,
2

Pozwala określić plik lub urządzenie, z którym będziesz pracować. Tworzenie, aktualizowanie lub wyodrębnianie z niego rzeczy w zależności od innych dostarczonych flag. Na przykład:

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

# Extract the tar file.
tar -xvf filename.tar
sygnatariusz
źródło