次の問題を抱えているのは私だけではないと私は確信しています:* nixでファイルを圧縮解除する必要があるたびに、すべてのスイッチを思い出せず、最終的にファイルをグーグルしてしまいます。これを行う。
あなたは良い圧縮チートシートを持っていますか?または、tarのこれらの厄介なスイッチすべてのニーモニックはどうですか?
ここでWikiを作成して、ここでニースチートシートを作成できるようにしています。
ああ、そしてmanページについて:それらが役に立たないことが1つありますか?それはファイルを解凍する方法を理解するためです。
または、包括的な助けを借りてオプションを補完する高度な補完機能(zshまたはbashの新しいバージョンなど)を備えたシェルを使用するのはどうですか? :))
Tarについて:「qwerty」キーボードを見てください。 「zxcvf」という文字が隣り合っています。 「tar czvf file.tar.gz files」または「tar xzvf file.tar.gz」のいずれかが必要です。
Tarオプションの要約
Y'allはこれを編集して難解なスイッチを追加することができますが、基本は次のとおりです。
- 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/*
「unp」と呼ばれる小さなPerlスクリプトがあります。
unp filename.tar.gz
...そしてすべてを抽出します。適切なバイナリがある限り、any圧縮ファイルで動作します。そして、あなたは単に構文やそのがらくたのことを忘れます。 Linuxディストリビューションのリポジトリを確認してください。 (少なくともArch、Debian、Ubuntuでは)そこにあるはずです。
本当に頻繁に使用することで、(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」は互いに関係がないように見えますが、この例外を覚えているのは簡単です。
また、グーグルが「man tar」に取って代わったのも面白いです。
男はあなたの友達です。
man tar
タイプしている間、いつも心の中でコマンドを読みます
冗長Zipファイルを圧縮する
tar cvzf FILE
詳細なZipファイルFILEを抽出します
tar xvzf FILE
私は次のことをします
タールを作成するには:
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 - )
--create
-c
新しいtarアーカイブを作成します。
--list
-t
アーカイブの内容を一覧表示します。
--extract
-x
アーカイブから1つ以上のメンバーを抽出します。
--append
-r
既存のアーカイブに新しいエントリを追加します。
--update
-u
アーカイブメンバーの最新のコピーが存在する場合は、アーカイブの最後に追加します。
--concatenate
--catenate
-A
1つ以上の既存のアーカイブを別のアーカイブの最後に追加します。
--delete
アーカイブからアイテムを削除します(テープでは機能しません)。
--compare
--diff
-d
アーカイブメンバーをファイルシステムの対応するメンバーと比較します。
私が使う時間の90%
tar -xvf file.*
x:抽出
v:冗長にする(オプション)
f:入力ファイル(tar、gz、bzip2など...)
簡単でしょ? :)
Filerollerを使用するか、コンソールにいない場合はArkを使用します。
私は atool プロジェクトの一部であるaunpack
というPerlスクリプトを長年使用しています。したがって、単にaunpack foo.{Zip/tar.gz/tar.bz2}
を実行すると、ファイル拡張子に基づいて正しい処理が行われます。
aunpack
のもう1つの利点は、現在のディレクトリを多数のファイルで汚染しないことです。サブディレクトリにない20個のファイルがfoo.Zip
にあるとします。これらのファイルを現在のディレクトリに生成する代わりに、aunpack
はfoo
サブディレクトリを作成し、そこにすべてのファイルを配置します。
あなたに必要なのは tar x
(標準入力から抽出)、tar c
(tarからstdout)、gzip -c
(標準入力から標準出力へのgzip; -1
から-9
圧縮レベル。同じことがbzip2
)およびgunzip -c
(stdinからstdoutへのgunzip)-その他はすべてパイプです。
Tarおよびgzipするには:
$ tar c * | gzip -c > out.tar.gz
Gzipを解凍してuntarするには
$ gunzip -c < out.tar.gz | tar x
甘いプログレスバーが必要な場合は、 pv を使用します。これはcatに似ていますが、プログレスバーを表示します。
$ 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%
いくつかの文字だけでなく、あなたが望むものを考えるのは簡単だと思います。
説明のために、file.tar.gzを抽出する方法の例を使用します。
これはtarファイルなので、tarプログラムを使用する必要があります。次に、オプションです。
これは、以下の例で示されています。
tar xzf file.tar.gz
私が覚えている方法は、それが常に「tar XXvf」であり、2つのXが
nを圧縮タイプに追加すると、圧縮されているがtarファイルではない場合があります。例えばg n Zipまたはb n Zip2。
どちらかと言えば、2を忘れて「bzip」と入力することもあります。
エイリアスを作成することもできます。次の2行を~/.bash_aliases
ファイルに追加するだけです。
alias untar="tar xvf"
alias dotar="tar cvf"
次に、untar foo.tar.gz
を使用して抽出し、dotar foo.bar
を使用して圧縮できます。覚えやすい他のエイリアスを使用できます。
[〜#〜] c [〜#〜] reate [〜#〜] z [〜#〜] ip to [〜#〜] f [ 〜#〜] ilename
tar -czf myfile.tar.gz myfile.sql
e [〜#〜] x [〜#〜] tract [〜#〜] z [〜#〜] ip with [〜#〜] f [〜#〜] ilename
tar -xzf myfile.tar.gz