Untar, ungz, gz, tar - jak pamiętasz wszystkie przydatne opcje?

74

Jestem pewien, że nie jestem jedynym, który ma następujący problem: za każdym razem, gdy muszę rozpakować plik w * nix, nie pamiętam wszystkich przełączników, i w końcu googluję, co jest zaskakujące, biorąc pod uwagę, jak często muszę Zrób to.

Czy masz dobry ściągacz na kompresję? A może mnemonik dla wszystkich tych paskudnych przełączników w tar?

Robię ten artykuł wiki, abyśmy mogli tutaj stworzyć fajną ściągę.

Aha, a jeśli chodzi o strony podręcznika: czy jest jedna rzecz, dla której nie są one pomocne, chodzi o to, aby dowiedzieć się, jak rozpakować plik.

martwy programista
źródło
1
skorzystaj ze stron podręcznika, wtedy nie musisz tworzyć wiki i musisz tylko pamiętać polecenie man :-) man (1)
Florenz Kley
9
eXtract Zee File jest tym, co pamiętam
Kanadyjczyk Łukasz
Utwórz plik Zee Vocking może być odpowiedni do utworzenia pliku .tar.gz
CousinCocaine

Odpowiedzi:

65

A może skorzystasz z powłoki z zaawansowanymi funkcjami uzupełniania (takimi jak Zsh lub świeże wersje bash), które uzupełnią opcje za Ciebie, z kompleksową pomocą? :))

Jeśli chodzi o tar: wystarczy spojrzeć na klawiaturę „qwerty”. Obok siebie znajdują się litery „zxcvf”. Potrzebujesz albo „plików tar czvf file.tar.gz” lub „tar xzvf file.tar.gz”.

Adept
źródło
Rekwizyty za odpowiedź na pytanie :)
To fajna wskazówka „qwerty”! :)
cholernie niesamowite!
deadprogrammer,
2
Inna wskazówka jest taka, że zopcja (lub jopcja .bz2plików) nie jest potrzebna podczas wypakowywania z nowoczesnymi wersjami tar. Automatycznie rozpakowuje plik.
Nate
10
Użyłem tar około dziesięć miliardów razy i nigdy nie zauważyłem, że wszystkie najczęściej używane opcje znajdują się obok siebie na klawiaturze. headsmack
Tyler McHenry
40

Podsumowanie opcji smoły

Zapraszamy wszystkich do edycji tego, aby dodać więcej ezoterycznych przełączników, ale oto podstawy:

  • x - wypakuj pliki
  • c - utwórz archiwum
  • t - lista plików
  • v - pełny (wyświetla listę plików podczas ich przetwarzania)
  • j - użyj kompresji bz2
  • z - użyj kompresji gz
  • f - odczyt lub zapis plików na dysku

Przykłady

Rozpakuj plik tar.gz: tar zxf tarball.tar.gz

Rozpakuj plik tar.bz2: tar jxf tarball.tar.bz2

Utwórz plik tar.gz: tar zcvf tarvall.tar.gz mój_katalog / *

anon
źródło
23

Istnieje mały skrypt Perla o nazwie „unp”.

unp filename.tar.gz

... i wyciąga wszystko. Działa z każdym skompresowanym plikiem, o ile masz odpowiednie pliki binarne. I po prostu zapominasz o składni lub jakimkolwiek badziewiu. Sprawdź repozytoria dystrybucji Linuksa. Powinno tam być (przynajmniej na Arch, Debian i Ubuntu).

Vicent Marti
źródło
Nawet po dłuższym używaniu tar nadal muszę wyszukiwać głupie flagi. unp jest właściwą drogą.
Yada
8

Naprawdę przy częstym używaniu robię różnicę między wydobywaniem (x) danych a kompresowaniem (c) danych:

Wyciągać:

tar xzf data.tgz

Aby skompresować:

tar czf data.tgz

Ponadto możesz dodać dwie funkcje również do swojego .bashrc:

function extract () {     
        if ($# -ne 1); then
                echo "Usage: $0  `<compressed archive>"`
                exit 1
        fi
        tar xzf $1
}

function compress () {
        if ($# -ne 2); then
                echo "Usage: $0 `<compressed archive> <files|directories>"`
                exit 1
        fi
        tar czf $1 $2
}

Jest jeszcze jedna fajna funkcja wyodrębniania, która wykrywa rozszerzenie skompresowanego pliku i wykonuje zadanie za Ciebie:

extract () {
   if [ -f $1 ] ; then
       case $1 in
           *.tar.bz2)   tar xvjf $1    ;;
           *.tar.gz)    tar xvzf $1    ;;
           *.bz2)       bunzip2 $1     ;;
           *.rar)       unrar x $1       ;;
           *.gz)        gunzip $1      ;;
           *.tar)       tar xvf $1     ;;
           *.tbz2)      tar xvjf $1    ;;
           *.tgz)       tar xvzf $1    ;;
           *.zip)       unzip $1       ;;
           *.Z)         uncompress $1  ;;
           *.7z)        7z x $1        ;;
           *)           echo "don't know how to extract '$1'..." ;;
       esac
   else
       echo "'$1' is not a valid file!"
   fi
 }
anon
źródło
6

Po prostu wpisz, tar --helpa znajdziesz swoją ściągawkę.

Jeremy Ruten
źródło
12
na poważnie, czy kiedykolwiek próbowałeś przeczytać tę stronę podręcznika?
deadprogrammer,
Może to być trochę nieczytelne i długie, ale myślę, że działa dobrze, po prostu szukając nazwy opcji. Możesz również grep dla opcji, której szukasz, tj. 'Tar --help | ekstrakt grep ”.
Jeremy Ruten
1
Wspaniały. A potem musisz przedzierać się przez stronę podręcznika, która (wśród rzeczy, których szukasz) zawiera mnóstwo archaicznych poleceń streamera i opcji, z których nikt nie potrzebuje.
2
Naprawdę nie rozumiem, co jest w tym takiego trudnego. Aby wyodrębnić archiwum, po prostu znajdź opcję wyodrębnienia i dodaj -x do swojego polecenia. Jeśli chcesz, żeby to było pełne, znajdź tę opcję i dodaj av, aby uzyskać -xv. Następnie kontynuuj, aż otrzymasz dokładnie to, czego potrzebujesz. Posiada nawet przykładowe polecenia typowych operacji.
Jeremy Ruten
1
Jeremy, prawdziwy problem polega na tym, że nie zawsze znasz właściwe słownictwo. W związku z tym łatwo się pomylić i znaleźć podobne opcje, aby nie działały. Następnie musisz umieścić (niektóre) z nich w odpowiedniej kolejności. Nie jest to trywialne dla osoby migrującej z systemu Windows. Tym bardziej, że nie znali skryptów w systemie Windows.
Nazadus,
3

Jeśli masz problemy z zapamiętywaniem opcji tar, spróbuj użyć rur:

  • zcat file.tar.gz | tar xvf -
  • bzcat file.tar.bz2 | tar xvf -

Wymień tar xvsię tar tvpo prostu zobaczyć zawartość archiwum za.

Osobiście używam następujących mnemoników:

  • t, x lub c odpowiednio dla „tabulacji”, „xtractingu” lub „tworzenia”.
  • v, aby wyświetlić listę wszystkich plików.
  • z, j lub nic dla odpowiednio tar.gz, tar.bz2 lub plain .tar.
  • f dla podania nazwy pliku, w porównaniu z domyślnym użyciem stdin / stdout lub urządzenia taśmowego.

Chociaż „j” i „bzip2” wydają się nie mieć ze sobą nic wspólnego, z łatwością pamiętam ten wyjątek.

Zabawne jest też to, że Googling zastąpił „man tar”.

Logan
źródło
Powinieneś przyzwyczaić się zawsze zapewniać tę fopcję: dopiero niedawno domyślna dystrybucja tar jest domyślna f -, f /dev/rmt0lub podobna. W końcu smoła jest urządzeniem ARCHiver.
ephemient
1
co tabelaryczne?
Claudiu
3

Mężczyzna jest twoim przyjacielem.

man tar

madlep
źródło
2

Trzy najczęściej używane operacje :

--create -c

Utwórz nowe archiwum tar.

--list -t

Wyświetl zawartość archiwum.

--extract -x

Wyodrębnij jednego lub więcej członków z archiwum.


Pięć zaawansowanych operacji tar :

--append -r

Dodaj nowe wpisy do archiwum, które już istnieje.

--update -u

Dodaj nowsze kopie elementów archiwalnych na końcu archiwum, jeśli istnieją.

--concatenate --catenate -A

Dodaj jedno lub więcej istniejących archiwów na końcu innego archiwum.

--delete

Usuń elementy z archiwum (nie działa na taśmach).

--compare --diff -d

Porównaj członków archiwum z odpowiednikami w systemie plików.


Lazer
źródło
2

Zawsze piszę polecenia podczas pisania

skompresuj pełny plik zip

tar cvzf FILE

wypakuj pełny plik zip PLIK

tar xvzf FILE
feeela
źródło
2

Robię następujące

Aby utworzyć tar:

tar czvf foo.tar.gz <files to be included>

Aby rozpakować:

tar zxvf foo.tar.gz

Powinny to być główne przełączniki, o które należy się martwić:

c - create
z - compress/uncompress
x - extracte
v - verbose
f - file

Możesz robić bardziej wymyślne rzeczy, takie jak tar i untar inline, podczas próby przenoszenia plików między katalogami, takich jak:

tar cf - <files to be copied> | (cd <target directory>; tar xvf - )
anon
źródło
1

90% czasu po prostu używam

tar -xvf file.*  

x: wyodrębnij
v: bądź pełny (opcjonalnie)
f: plik wejściowy (tar, gz, bzip2 itp.)

Łatwe, co? :)
Użyj Fileroller lub Ark, jeśli nie jesteś w konsoli.

ramajak
źródło
Do tej pory korzystałem z Filerollera, ale obecnie nie mam szczęścia, ponieważ wersja, którą mam, wykorzystuje 1,1 Gb pamięci.
Andrew Grimm,
1

Od wielu lat korzystam ze skryptu Perla aunpack, który jest częścią projektu atool . Więc wystarczy uruchomić: aunpack foo.{zip/tar.gz/tar.bz2}i robi to poprawnie na podstawie rozszerzenia pliku.

Inną zaletą aunpackjest to, że nie zanieczyszcza bieżącego katalogu dużą ilością plików. Powiedzmy, że jest 20 plików foo.zip, które nie znajdują się w podkatalogu. Zamiast wyrzucać te pliki do bieżącego katalogu, aunpackutworzy foopodkatalog i umieści tam wszystkie pliki.

Dave Dribin
źródło
1

Wszystko czego potrzebujesz to tar x(wyciąg ze standardowego wejścia), tar c(tar do standardowego), gzip -c(gzip ze standardowego standardowego standardu; -1do -9poziomów kompresji; to samo dotyczy bzip2) i gunzip -c(gunzip standardowego standardowego standardowego standardu) - wszystko inne to rury.

Aby tar i gzip:

$ tar c * | gzip -c > out.tar.gz

Aby rozpakować i rozpakować

$ gunzip -c < out.tar.gz | tar x

Jeśli chcesz słodkie paski postępu, użyj pv, który jest podobny do cat, ale pokazuje paski postępu:

$ tar c * | bzip2 -c | pv > out.tar.gz
 22.6MiB 0:00:03 [3.64MiB/s] [  <=>                           ]
$ pv in.tar.gz | bunzip2 -c | tar x
   80MiB 0:00:00 [  58MiB/s] [===============================>] 100%
porty
źródło
0

Myślę, że łatwo jest wymyślić, czego chcesz, a nie tylko kilka liter.

Aby to zilustrować, wykorzystam przykład wyodrębnienia file.tar.gz:

Ponieważ jest to plik tar, powinieneś użyć programu tar. To są opcje:

  1. x skoro chcesz e x pokarmowy.
  2. z, jeśli plik kończy się na .gz. (gz jest po tar w nazwie pliku) Ta opcja gunzip archiwum.
  3. f dla pliku, po którym następuje nazwa archiwum.

Jest to pokazane w poniższym przykładzie:

tar xzf file.tar.gz
Espen
źródło
0

Pamiętam, że zawsze jest to „tar XXvf”, gdzie znajdują się dwa X-y

  • x dla e X tract lub c dla C reate oraz,
  • albo z = gzip, j = bzip2 (gzip jest bardziej powszechny, więc zwykle jest to z, z jakiegokolwiek powodu j = bzip2 utknął mi w głowie).

Czasami natrafiasz na skompresowane, ale nieszeregowane pliki, w których dodajesz un do dowolnego typu kompresji. np. g un zip lub b un zip2.

Jeśli już, to zapominam 2 i czasami piszę „bzip”.

mmacaulay
źródło
0

możesz także utworzyć alias. po prostu dodaj te dwa wiersze do swojego ~/.bash_aliasespliku:

alias untar="tar xvf"
alias dotar="tar cvf"

następnie możesz użyć untar foo.tar.gzdo wyodrębnienia i dotar foo.barkompresji. możesz użyć innych aliasów, które są łatwe do zapamiętania.

foerno
źródło
0

P rzyłącz Z ip do F nazwa pliku

tar -czf myfile.tar.gz myfile.sql

e X tract Z ip z nazwą F

tar -xzf myfile.tar.gz
littledynamo
źródło