Untar, ungz, gz, tar - Tüm faydalı seçenekleri nasıl hatırlıyorsun?


76

Aşağıdaki sorunu yaşayan tek kişi ben olmadığımdan eminim: * nix'te bir dosyayı açmam gerektiğinde, tüm anahtarları hatırlayamıyorum ve son olarak googling yapmam gerekiyor, bu da ne kadar sık ​​ihtiyaç duyduğumu düşünmemizi bekliyor. Bunu yap.

İyi bir sıkıştırma kopya kağıdı var mı? Ya da katrandaki tüm bu kötü anahtarlar için bir anımsatmaya ne dersiniz?

Bu makaleyi bir wiki yapıyorum, böylece burada güzel bir kopya kağıdı oluşturabiliriz.

Oh, ve man sayfaları hakkında: Bir dosyanın nasıl çözüleceğini bulmak için faydalı olmadıkları bir şey var mı?


1
manuel sayfaları kullanın, sonra bir wiki oluşturmak zorunda kalmazsınız ve sadece man komutunu hatırlamanız gerekir :-) man (1)
Florenz Kley

9
eXtract Zee File bunu hatırladığım gibi
Kanadalı Luke

Zee Vocking Dosyası Oluşturma, bir .tar.gz
CousinCocaine

Yanıtlar:


65

Veya kabuğu, sizin için seçenekleri tamamlayacak kapsamlı bir yardımla tamamlayacak gelişmiş tamamlama yetenekleriyle (zsh veya bash'ın yeni sürümleri gibi) kullanmaya ne dersiniz? :))

Katranla ilgili olarak: "qwerty" klavyesine bakın. Yan yana "zxcvf" harfleri vardır. "Tar czvf file.tar.gz dosyaları" veya "tar xzvf file.tar.gz" ya ihtiyacınız vardır.


Aslında soruyu yanıtlamanın destekleri :)

Şimdi, bu bir SOĞUTMA "qwerty" ipucu! :)

şaka harika!
deadprogrammer

2
Başka bir ipucu, zseçeneğin (veya dosyalar için jseçeneğin .bz2) modern tar sürümleriyle ayıklanması gerekmediğidir. Dosyayı otomatik olarak açar.
Nate

10
Katranı yaklaşık on milyar kez kullandım ve en sık kullanılan tüm seçeneklerin klavyede yan yana olduğunu fark etmedim. headsmack
Tyler McHenry

41

Tar seçeneği özeti

Hepiniz daha ezoterik anahtarlar eklemek için bunu düzenleyebiliriz ama işte temeller:

  • x - dosyaları çıkart
  • c - arşiv oluştur
  • t - dosyaları listele
  • v - verbose (dosyaları işlerken listele)
  • j - bz2 sıkıştırmasını kullanın
  • z - gz sıkıştırması kullan
  • f - dosyaları oku veya diske yaz

Örnekler

Bir tar.gz dosyasını açın: tar zxf tarball.tar.gz

Bir tar.bz2 dosyasını açın: tar jxf tarball.tar.bz2

Bir tar.gz dosyası oluşturun: tar zcvf tarvall.tar.gz mydir / *


23

"Unp" adında küçük bir Perl betiği var.

unp filename.tar.gz

... ve her şeyi çıkarır. Doğru ikili dosyalara sahip olduğunuz sürece herhangi bir sıkıştırılmış dosyayla çalışır . Ve sen sadece sentaksı veya bu saçmalıklardan herhangi birini unutursun. Linux dağıtımınızın depolarını kontrol edin. Orada olmalı (en azından Arch, Debian ve Ubuntu'da).


Uzun zamandır tar kullandıktan sonra bile aptal bayraklar için google'a ihtiyacım var. unp, gitmenin yolu.
Yada

8

Gerçekten sık kullanımla (x) verilerini çıkarma ve (c) verilerini sıkıştırma arasında fark yaratırım:

Ayıklamak:

tar xzf data.tgz

Sıkıştırmak için:

tar czf data.tgz

Ayrıca .bashrc de iki fonksiyon ekleyebilirsiniz:

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
}

Başka bir güzel özü işlevi vardır, sıkıştırılmış dosyanızın uzantısını algılar ve işi sizin için yapar:

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
 }

5

Sadece yazın tar --helpve kağıdın var.


12
cidden, o adam sayfasını okumayı hiç denedin mi?
deadprogrammer,

Biraz okunaksız ve uzun olabilir ama bence sadece bir seçenek adına bakmak için iyi çalışıyor. Ayrıca, aradığınız seçeneği de seçebilirsiniz, örneğin 'tar --help | grep özü '.
Jeremy Ruten,

1
Harika. Ve sonra (aradığınız şeylerin arasında) size tonlarca arkaik yayıcı komut ve geliştiricinin ihtiyaçları dışında hiç kimsenin seçeneklerini söylemediği bir sayfa üzerinden geçmelisiniz.

2
Neyin bu kadar zor olduğunu gerçekten anlamıyorum. Bir arşivi çıkarmak için, extract seçeneğini bulun ve emrinize -x ekleyin. Ayrıntılı istiyorsanız, bu seçeneği bulun ve -xv'ye av ekleyin. Sonra istediğiniz komutu alana kadar devam edin. Hatta ortak işlemler için örnek komutlar vardır.
Jeremy Ruten

1
Jeremy, asıl sorun her zaman doğru kelimeleri bilmeyebilir. Bu yüzden, kafan karışmak ve benzer seçenekleri bulmak kolaydır ve çalışmaz. Ardından, (bazılarını) uygun sırayla yerleştirmeniz gerekir. Bu, Windows'tan göç eden biri için önemsiz değildir. Daha da fazlası, Windows'ta komut dosyası kullanmayacaklarını bilselerdi.
Nazadus,

3

Katran seçeneklerini hatırlamakta sorun yaşıyorsanız, boruları kullanmayı deneyin:

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

Tarball'ın içeriğini görmek için tar xvile değiştirin tar tv.

Şahsen ben şu anımsatıcıları kullanıyorum:

  • t, x veya c sırasıyla "tablolama", "xtracting" veya "yaratma" için.
  • v tüm dosyaları listelemek için.
  • z, j veya sırasıyla tar.gz, tar.bz2 veya düz zift için hiçbir şey.
  • f dosya adı vermek için, örneğin stdin / stdout veya teyp aygıtı kullanma varsayılanı.

"J" ve "bzip2" nin birbiriyle ilgisi yok gibi görünse de, bu istisnayı hatırlamanın kolay olduğunu düşünüyorum.

Ayrıca, Googling’in "katran adam" ın yerini almasının komik olduğunu düşünüyorum.


Her zaman fseçeneği sağlama alışkanlığına sahip olmalısınız : bu sadece son zamanlarda tar varsayılanın dağılımını f -, tarihsel varsayılanın f /dev/rmt0veya benzerinin dağılımını sağlar . Ne de olsa, katran Tape ARchiver.
efemient

1
Tablo nedir?
Claudiu


2

En Sık Kullanılan Üç İşlem :

--create -c

Yeni bir katran arşivi oluşturun.

--list -t

Bir arşivin içeriğini listeleyin.

--extract -x

Bir arşivden bir veya daha fazla üye çıkarın.


Beş Gelişmiş Katran İşlemleri :

--append -r

Zaten var olan bir arşive yeni girişler ekleyin.

--update -u

Varsa, arşiv üyelerinin daha yeni kopyalarını bir arşivin sonuna ekleyin.

--concatenate --catenate -A

Başka bir arşivin sonuna önceden mevcut bir veya daha fazla arşiv ekleyin.

--delete

Arşivdeki öğeleri silme (kasetlerde çalışmaz).

--compare --diff -d

Arşiv üyelerini dosya sistemindeki meslektaşları ile karşılaştırın.



2

Yazarken her zaman aklımdaki komutları okudum

ayrıntılı zip dosyasını sıkıştır

tar cvzf FILE

ayrıntılı zip dosyasını çıkar

tar xvzf FILE

2

Aşağıdakileri yapıyorum

Katran oluşturmak için:

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

Yıldızını kaldırmak için:

tar zxvf foo.tar.gz

Bunlar, endişelenmeniz gereken birincil anahtarlar olmalıdır:

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

Dosyaları şu gibi dizinler arasında taşımaya çalışırken, satır içi ya da satır içi gibi bazı merak uyandıran şeyler yapabilirsiniz:

tar cf - <files to be copied> | (cd <target directory>; tar xvf - )

1

Sadece kullandığım zamanın% 90'ı

tar -xvf file.*  

x: özü
v: ayrıntılı (isteğe bağlı)
f: giriş dosyası (tar, gz, bzip2, vb ...)

Kolay, ha? :)
Konsolda değilseniz Fileroller veya Ark kullanın.


Şimdiye kadar fileroller kullanıyorum, fakat şu an şansım bitmiyor çünkü sürüm 1.1 Gb bellek kullanıyor.
Andrew Grimm

1

Uzun yıllardır atool projesinin bir aunpackparçası olarak adlandırılan bir Perl betiği kullanıyorum . Yani sadece çalıştırın: ve dosya uzantısına göre doğru olanı yapar.aunpack foo.{zip/tar.gz/tar.bz2}

Bunun bir başka yararı aunpackda mevcut dizini birçok dosya ile kirletmemesi. Diyelim ki foo.zipalt dizinde olmayan 20 dosya var . Bu dosyaları geçerli dizinde yaymak yerine, aunpackbir fooalt dizin oluşturacak ve tüm dosyaları buraya koyacaktır.


1

Tek ihtiyacınız olan tar x(Stdin'den özü), tar c(Stdout'a katran), gzip -c(; Stdout'a stdin'den gzip -1için -9sıkıştırma seviyeleri için, aynı gider bzip2) ve gunzip -c(Stdout'a stdin'den gunzip) - her şey boruları olduğunu.

Katran ve gzip için:

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

Gzip ve untar'ı kaldırmak için

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

Tatlı ilerleme çubukları istiyorsanız, kediye benzer ancak ilerleme çubukları gösteren pv kullanın :

$ 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

Ne istediğini düşünmenin kolay olduğunu düşünüyorum, sadece bazı harfleri değil.

Göstermek için, file.tar.gz dosyasının nasıl çıkarılacağına dair bir örnek kullanacağım:

Bir tar dosyası olduğundan, tar programını kullanmalısınız. O zaman seçenekler:

  1. x e istiyorum çünkü x yoluna.
  2. Dosya .gz ile bitiyorsa z. (gz dosya adında tar'dan sonradır) Bu seçenek arşivi temizler.
  3. f dosya için arşiv adını takip edin.

Bu, aşağıdaki örnekte gösterilmiştir:

tar xzf file.tar.gz

0

Hatırlamamın yolu, her zaman iki X'in olduğu "tar XXvf" dir.

  • e X yolu için x veya C reate için c, ve
  • ya z = gzip, j = bzip2 (gzip daha yaygındır, bu nedenle genellikle z, j = bzip2 sadece kafamın içinde kalmış durumda).

Bazen Eklemek tarred sıkıştırılmış ancak dosyalar halinde çalışacak un sıkıştırma türü ne olursa olsun için. örneğin gr un fermuar veya b un Zip2.

Bir şey olursa, 2'yi unuturum ve bazen "bzip" yazarım.


0

ayrıca bir takma ad da oluşturabilirsiniz. sadece bu iki satırı ~/.bash_aliasesdosyanıza eklemeniz yeterlidir:

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

daha sonra untar foo.tar.gzayıklamak ve dotar foo.barsıkıştırmak için kullanabilirsiniz. hatırlamanız kolay olan diğer takma adları kullanabilirsiniz.


0

C REATE Z için ip F ilename

tar -czf myfile.tar.gz myfile.sql

E X- yolu , Z ile ip F ilename

tar -xzf myfile.tar.gz
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.