次の問題を抱えているのは私だけではないことを確信しています:* nixでファイルを圧縮解除する必要があるたびに、すべてのスイッチを思い出せず、グーグルになってしまいます。これを行う。
良い圧縮チートシートはありますか?それとも、tarにあるこれらすべての厄介なスイッチのニーモニックはどうですか?
ここで素敵なチートシートを作成できるように、この記事をwikiにしています。
ああ、マニュアルページについては、役に立たないことが1つあります。それは、ファイルを圧縮解除する方法を理解するためです。
次の問題を抱えているのは私だけではないことを確信しています:* nixでファイルを圧縮解除する必要があるたびに、すべてのスイッチを思い出せず、グーグルになってしまいます。これを行う。
良い圧縮チートシートはありますか?それとも、tarにあるこれらすべての厄介なスイッチのニーモニックはどうですか?
ここで素敵なチートシートを作成できるように、この記事をwikiにしています。
ああ、マニュアルページについては、役に立たないことが1つあります。それは、ファイルを圧縮解除する方法を理解するためです。
回答:
または、包括的なヘルプを使用してオプションを完了する高度な補完機能(zshやbashの新しいバージョンなど)を備えたシェルを使用してはどうでしょうか。:))
tarについて:「qwerty」キーボードを見てください。隣同士に「zxcvf」という文字があります。「tar czvf file.tar.gz files」または「tar xzvf file.tar.gz」のいずれかが必要です。
zオプション(またはファイルのjオプション.bz2)は必要ないということです。ファイルを自動的に解凍します。
タールオプションの概要
難解なスイッチを追加するためにこれを編集することはできますが、基本は次のとおりです。
- 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 / *
実際に頻繁に使用すると、データの抽出(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
}
入力するだけでtar --helpチートシートが表示されます。
tarオプションを思い出せない場合は、パイプを使用してみてください。
zcat file.tar.gz | tar xvf -bzcat file.tar.bz2 | tar xvf -に置き換えtar xvてtar tv、tarballの内容を表示します。
個人的には、次のニーモニックを使用します。
「j」と「bzip2」は互いに関係がないように見えますが、この例外を覚えているのは簡単です。
また、グーグルが「マンタール」に取って代わったことは面白いと思う。
fオプションを常に提供する習慣を身に付ける必要があります。tarの配布がにデフォルト設定されるのはごく最近のことf -であり、歴史的なデフォルトはf /dev/rmt0類似しています。結局のところ、tarはTape ARchiverです。
--create-c
新しいtarアーカイブを作成します。
--list-t
アーカイブの内容をリストします。
--extract-x
アーカイブから1つ以上のメンバーを抽出します。
--append-r
既に存在するアーカイブに新しいエントリを追加します。
--update-u
アーカイブメンバーの最新のコピーが存在する場合は、アーカイブの最後に追加します。
--concatenate--catenate-A
1つ以上の既存のアーカイブを別のアーカイブの最後に追加します。
--delete
アーカイブからアイテムを削除します(テープでは機能しません)。
--compare--diff-d
アーカイブメンバーをファイルシステム内の対応するメンバーと比較します。
私は次のことをします
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 - )
必要なのは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%