Untar、ungz、gz、tar-すべての便利なオプションをどのように覚えていますか?


76

次の問題を抱えているのは私だけではないことを確信しています:* nixでファイルを圧縮解除する必要があるたびに、すべてのスイッチを思い出せず、グーグルになってしまいます。これを行う。

良い圧縮チートシートはありますか?それとも、tarにあるこれらすべての厄介なスイッチのニーモニックはどうですか?

ここで素敵なチートシートを作成できるように、この記事をwikiにしています。

ああ、マニュアルページについては、役に立たないことが1つあります。それは、ファイルを圧縮解除する方法を理解するためです。


1
マニュアルページを使用すると、wikiを作成する必要がなく、manコマンドを覚えるだけで済みます:-) man(1)
Florenz Kley

9
eXtract Zeeファイルは私がそれを覚えている方法です
カナダのルーク

Zee Vockingファイルの作成は、.tar.gzの作成に適している可能性があります
-CousinCocaine

回答:


65

または、包括的なヘルプを使用してオプションを完了する高度な補完機能(zshやbashの新しいバージョンなど)を備えたシェルを使用してはどうでしょうか。:))

tarについて:「qwerty」キーボードを見てください。隣同士に「zxcvf」という文字があります。「tar czvf file.tar.gz files」または「tar xzvf file.tar.gz」のいずれかが必要です。


実際に質問に答えるための小道具:)

今、それはクールな「qwerty」のヒントです!:)

すごい!
deadprogrammer

2
もう1つのヒントは、最新バージョンのtarで抽出する場合、zオプション(またはファイルのjオプション.bz2)は必要ないということです。ファイルを自動的に解凍します。
ネイト

10
私は約100億回tarを使用しましたが、最も一般的に使用されるすべてのオプションがキーボード上で隣り合っていることに気づきませんでした。headsmack
タイラーマクヘンリー

41

タールオプションの概要

難解なスイッチを追加するためにこれを編集することはできますが、基本は次のとおりです。

  • x-ファイルを抽出する
  • c-アーカイブを作成する
  • t-ファイルをリストする
  • v-詳細(ファイルを処理するときにファイルをリストします)
  • j -bz2圧縮を使用する
  • z -gz圧縮を使用
  • f-ディスクへのファイルの読み取りまたは書き込み

tar.gzファイルを解凍します:tar zxf tarball.tar.gz

tar.bz2ファイルを解凍します:tar jxf tarball.tar.bz2

tar.gzファイルを作成します:tar zcvf tarvall.tar.gz mydir / *


23

「unp」と呼ばれる小さなPerlスクリプトがあります。

unp filename.tar.gz

...そしてすべてを抽出します。適切なバイナリを持っている限り、あらゆる圧縮ファイルで動作します。そして、構文やそのくだらないことを忘れてしまいます。Linuxディストリビューションのリポジトリを確認してください。そこにあるはずです(少なくともArch、Debian、Ubuntuでは)。


かなり長い間tarを使用した後でも、愚かなフラグをグーグルで検索する必要があります。unpは行く方法です。
矢田

8

実際に頻繁に使用すると、データの抽出(x)とデータの圧縮(c)に違いが生じます。

抽出するには:

tar xzf data.tgz

圧縮するには:

tar czf data.tgz

さらに、.bashrcにも2つの関数を追加できます。

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
}

別の優れた抽出関数があります。圧縮ファイルの拡張子を検出し、あなたのために仕事をします:

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

入力するだけでtar --helpチートシートが表示されます。


12
真剣に、あなたはそのマニュアルページを読んだことがありますか?
deadprogrammer 08年

少し読みにくく長いかもしれませんが、オプションの名前を調べるだけでうまくいくと思います。探しているオプション、つまり 'tar --help | grep extract '。
ジェレミールーテン

1
すばらしいです。そして、(探しているものの中で)開発者が必要とするもの以外の誰もが手に負えない大量のストリーマーコマンドとオプションを示すmanページを歩いて渡らなければなりません。

2
何がそんなに難しいのか、本当にわかりません。アーカイブを抽出するには、抽出オプションを見つけて、コマンドに-xを追加します。冗長にする場合は、そのオプションを見つけてavを追加して-xvを取得します。次に、必要なコマンドを正確に取得するまで続行します。一般的な操作のためのコマンド例さえあります。
ジェレミールーテン

1
ジェレミー、本当の問題は、あなたが常に適切な語彙を知っているとは限らないということです。そのため、混乱し、同様のオプションを見つけて、それらが機能しないようにするのは簡単です。次に、それらの一部(いくつか)を適切な順序で配置する必要があります。これは、Windowsから移行する人にとっては簡単なことではありません。さらに、Windowsでのスクリプト作成を知らなかった場合。
ナザダス2009

3

tarオプションを思い出せない場合は、パイプを使用してみてください。

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

に置き換えtar xvtar tv、tarballの内容を表示します。

個人的には、次のニーモニックを使用します。

  • t、x、またはcは、それぞれ「表」、「xtracting」、または「作成」を表します。
  • vすべてのファイルをリストします。
  • tar.gz、tar.bz2、またはプレーン.tarの場合、それぞれz、j、またはなし。
  • ファイル名を指定する場合はf、stdin / stdoutまたはテープデバイスを使用する場合のデフォルト。

「j」と「bzip2」は互いに関係がないように見えますが、この例外を覚えているのは簡単です。

また、グーグルが「マンタール」に取って代わったことは面白いと思う。


fオプションを常に提供する習慣を身に付ける必要があります。tarの配布がにデフォルト設定されるのはごく最近のことf -であり、歴史的なデフォルトはf /dev/rmt0類似しています。結局のところ、tarはTape ARchiverです。
一時的な08年

1
集計してる?
クラウディ


2

最も頻繁に使用される3つの操作

--create -c

新しいtarアーカイブを作成します。

--list -t

アーカイブの内容をリストします。

--extract -x

アーカイブから1つ以上のメンバーを抽出します。


5つの高度なtar操作

--append -r

既に存在するアーカイブに新しいエントリを追加します。

--update -u

アーカイブメンバーの最新のコピーが存在する場合は、アーカイブの最後に追加します。

--concatenate --catenate -A

1つ以上の既存のアーカイブを別のアーカイブの最後に追加します。

--delete

アーカイブからアイテムを削除します(テープでは機能しません)。

--compare --diff -d

アーカイブメンバーをファイルシステム内の対応するメンバーと比較します。



2

入力中に常に頭の中でコマンドを読み上げます

詳細なzipファイルを圧縮する

tar cvzf FILE

詳細なzipファイルFILEを抽出します

tar xvzf FILE

2

私は次のことをします

tarを作成するには:

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

解凍するには:

tar zxvf foo.tar.gz

これらはあなたが心配する必要がある主要なスイッチであるはずです:

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

次のようにディレクトリ間でファイルを移動しようとしているときに、tarやuntarのような手の込んだものをインラインで実行できます。

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

1

使用する時間の90%

tar -xvf file.*  

x:抽出
v:冗長(オプション)
f:入力ファイル(tar、gz、bzip2など)

簡単ですか?:)
Filerollerを使用するか、コンソールにいない場合はArkを使用します。


これまで、filerollerを使用していましたが、現在使用しているバージョンでは1.1 Gbのメモリを使用しているため、現在は運が悪いです。
アンドリューグリム

1

私は長年aunpackatoolプロジェクトの一部と呼ばれるPerlスクリプトを使用しています。だからあなただけを実行します:aunpack foo.{zip/tar.gz/tar.bz2}そしてそれはファイル拡張子に基づいて正しいことをします。

他の利点はaunpack、大量のファイルで現在のディレクトリを汚染しないことです。foo.zipサブディレクトリにないファイルが20個あるとします。これらのファイルを現在のディレクトリに吐き出す代わりにaunpackfooサブディレクトリを作成し、そこにすべてのファイルを配置します。


1

必要なのはtar x(標準入力からの抽出物)、tar c(stdoutにタール)、gzip -c(; stdoutに標準入力からのgzip -1-9圧縮レベルのため、同じのために行くbzip2)とgunzip -c(stdoutに標準入力からはgunzip) -他のすべては、パイプです。

tarおよびgzipするには:

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

gzipとuntarを解凍するには

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

甘い進行状況バーが必要な場合は、catに似ていますが進行状況バーを表示するpvを使用します。

$ 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

手紙だけでなく、あなたが望むものを考えるのは簡単だと思います。

説明のために、file.tar.gzを抽出する方法の例を使用します。

tarファイルなので、tarプログラムを使用する必要があります。次に、オプションがあります:

  1. Xあなたは電子したいので、Xの道を。
  2. ファイルが.gzで終わる場合はz。(gzはファイル名のtarの後にあります)このオプションはアーカイブをgunzipします。
  3. ファイルのfの後にアーカイブ名が続きます。

これを以下の例で示します。

tar xzf file.tar.gz

0

私が覚えているのは、2つのXが常に「tar XXvf」であるということです

  • xはe X区域、cはC reateであり、
  • z = gzip、j = bzip2のいずれか(gzipの方が一般的であるため、何らかの理由でj = bzip2が頭に刺さっているだけです)。

圧縮タイプに関係なくunを追加する、圧縮されたがtarファイルではないファイルに遭遇することがあります。例:g un zipまたはb un zip2。

どちらかといえば、2を忘れて「bzip」と入力することもあります。


0

エイリアスを作成することもできます。次の2行を~/.bash_aliasesファイルに追加するだけです。

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

その後、を使用untar foo.tar.gzして抽出およびdotar foo.bar圧縮できます。覚えやすい他のエイリアスを使用できます。


0

C reateのZのに対して、IP F ilename

tar -czf myfile.tar.gz myfile.sql

E Xの道のZの持つIP F ilename

tar -xzf myfile.tar.gz
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.