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.


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”.


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 / *


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).


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
 }

6

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


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”.


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


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.



2

Zawsze piszę polecenia podczas pisania

skompresuj pełny plik zip

tar cvzf FILE

wypakuj pełny plik zip PLIK

tar xvzf FILE

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 - )

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.


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.


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%

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

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”.


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.