Linux講座にようこそ。このページは「Linuxの使い方 - 第4章 ファイル操作のコマンド2」です。
gzipとbzip2コマンドはUNIX系OSでよく使われている圧縮・解凍ツールで、ほとんどのLinuxディストリビューションで標準でインストールされています。また、Windows系OSで使われているzipやlzh形式の圧縮ファイルを取り扱うzip、unzip、lhaコマンドもあります。(Fedoraではlhaコマンドはインストールされないため、個別にインストールする必要があります)
gzipとbzip2コマンドは、主にtarコマンドで作成したアーカイブファイルを圧縮するのに使用します。一般に、bzip2コマンドの方が圧縮率が高いと言われていますので、最近はbzip2コマンドの方がよく使われているようです。
Windows系OSで解凍する可能性がある場合は、zipコマンドで圧縮しておけばWindowsの標準機能で解凍できます。ただし、ファイル名に全角文字を含んでいる場合は、ファイル名が文字化けしてしまうことがありますので、ファイル名は半角文字にしておいた方がよいでしょう。
この他のコマンドとして、gzipで圧縮したファイルの解凍を行うgunzipや、bzip2で圧縮したファイルの解凍を行うbunzip2がありますが、解凍はgzipやbzip2でもできますので、ここでは説明しません。使い方をお知りになりたい方はmanコマンド等で調べてください。
なお、KDEの場合はファイルマネージャーのDolphinで対話的に圧縮・解凍が行えますので、通常はそちらを使った方が簡単です。また、ArkというGUIのアーカイブツールもあります。
gzip及び、bzip2コマンドは圧縮結果を元のファイルに上書きします。上書きしたくない場合は-cオプションで標準出力に出力し、それをリダイレクトします。そのときの出力ファイルの拡張子は「.gz」及び、「.bz2」にします。
zip及び、lhaコマンドで作成した圧縮ファイルの拡張子は、それぞれ「.zip」及び、「.lzh」にします。
gzipコマンドのオプションには、次のようなものがあります。
オプション | 意味 |
---|---|
-c, --stdout, --to-stdout | 圧縮結果を標準出力に出力します。 |
-d, --decompress, --uncompress | 圧縮ファイルを解凍します。当オプションを指定しないと圧縮を行います。 |
-r, --recursive | ファイルパス名としてディレクトリを指定すると、そのディレクトリを含めてツリー構造全体を圧縮します。 |
bzip2コマンドのオプションには、次のようなものがあります。
オプション | 意味 |
---|---|
-z, --compress | 圧縮します。当オプションはデフォルト値です。 |
-c, --stdout | 圧縮結果を標準出力に出力します。 |
-d, --decompress | 圧縮ファイルを解凍します。 |
zipコマンドのオプションには、次のようなものがあります。
オプション | 意味 |
---|---|
-r,--recurse-paths | ファイルパス名としてディレクトリを指定すると、そのディレクトリを含めてツリー構造全体を圧縮します。 |
lhaコマンドのオプションには、次のようなものがあります。(オプションの先頭の-はありませんので注意してください)
オプション | 意味 |
---|---|
a | 圧縮します。 |
e | 圧縮ファイルを解凍します。 |
l | 圧縮情報を表示します。 |
gzipコマンドでカレントディレクトリの下のファイルを圧縮・解凍します。
$ ls ex02_1.c ex02_2.c makefile $ $ gzip ex02_1.c makefile ← 圧縮します $ ls ex02_1.c.gz ex02_2.c makefile.gz ← 拡張子「.gz」が付きます $ $ gzip -d ex02_1.c.gz makefile.gz ← 解凍します $ ls ex02_1.c ex02_2.c makefile ← 元に戻ります $
bzip2コマンドでカレントディレクトリの下のファイルを圧縮・解凍します。
$ ls ex02_1.c ex02_2.c makefile $ $ bzip2 ex02_1.c makefile ← 圧縮します(-zオプションを付けても同じ) $ ls ex02_1.c.bz2 ex02_2.c makefile.bz2 ← 拡張子「.bz2」が付きます $ $ bzip2 -d ex02_1.c.bz2 makefile.bz2 ← 解凍します $ ls ex02_1.c ex02_2.c makefile ← 元に戻ります $
tarのアーカイブファイルをbzip2で圧縮・解凍します。
$ tar -cf - . | bzip2 -c > ~/TMP/BACKUP/bkup1.tar.bz2 $ $ bzip2 -cd ~/TMP/BACKUP/bkup1.tar.bz2 | tar -xC ~/RESTORE -f - ← カレントディレクトリをRESTOREに変更して回復します $ ls ~/RESTORE ex02_1.c ex02_2.c makefile $
zipコマンドで圧縮し、unzipコマンドで解凍します。
$ zip ~/TMP/BACKUP/bkup2.zip ex02_1.c makefile adding: ex02_1.c (deflated 23%) adding: makefile (deflated 57%) $ $ cd ~/RESTORE $ unzip ~/TMP/BACKUP/bkup2.zip Archive: /home/merry/TMP/BACKUP/bkup2.zip inflating: ex02_1.c inflating: makefile $ ls ex02_1.c makefile $
lhaコマンドで圧縮・解凍します。
$ lha a ~/TMP/BACKUP/bkup3.lzh ex02_1.c makefile ex02_1.c - Frozen(77%) o makefile - Frozen(44%) o $ lha l ~/TMP/BACKUP/bkup3.lzh ← 圧縮ファイルの内容を表示します PERMSSN UID GID SIZE RATIO STAMP NAME ---------- ----------- ------- ------ ------------ -------------------- -rw-r--r-- 1001/501 132 77.3% May 19 14:20 ex02_1.c -rw-r--r-- 1001/501 267 44.9% May 18 10:49 makefile ---------- ----------- ------- ------ ------------ -------------------- Total 2 files 399 55.6% May 19 17:23 $ $ cd ~/RESTORE $ lha e ~/TMP/BACKUP/bkup3.lzh ex02_1.c - Melted : o makefile - Melted : o $ ls ex02_1.c makefile $
UNIX系OSでのテキストエディタといえばEmacsが有名ですが、最近はディスクトップ環境の標準エディタも充実してきました。例えば、GNOMEならばgedit、KDEならばKwite等があります。これらのほかに、UNIX系OSであればどれでも使えて手軽なviエディタがあります。初心者には使いにくいでしょうが、システム管理を行う方はviが使えたほうがよいでしょう。
viはスクリーンエディタですが、マウスやファンクションキーは使えません。操作はサブコマンドで行います。
viは入力モードとコマンドモードの2つのモードがあります。入力モードはデータの入力が出来るモードで、コマンドモードはviのサブコマンドが実行できるモードです。viを起動した直後はコマンドモードになっています。
モードの切替えは、入力モードからコマンドモードへは「Esc」(エスケープ)キーで、コマンドモードから入力モードへは文字や行の挿入コマンドを実行します。
サブコマンドは沢山ありますが、ここで紹介しているのは基本的なもののみです。
サブコマンド | 機能 |
---|---|
a、i | aコマンドはカーソルの後ろに、iコマンドはカーソルの前に文字を追加します。入力モードになります。 |
o、O | oコマンドはカーソル行の前に、Oコマンドはカーソル行の後ろに1行追加します。入力モードになります。 |
x | カーソルの1文字を削除します。文字列を削除するには「削除文字数x」とします。 |
dd | カーソル行の1行を削除します。連続行を削除するには「削除行数dd」とします。 |
「:xx」の形式のコマンドはedエディタのサブコマンドです。コマンドモードで:(コロン)を入力すると最終行にカーソルが移動しますので、そのままサブコマンドを入力します。
サブコマンド | 機能 |
---|---|
ZZ | データを元のファイルに格納して、viを終了します。 |
:w | データを元のファイルに格納します。「:write」も同じです。 |
:w ファイルパス名 | データを指定したファイルに格納します。「:write ファイルパス名」も同じです。 |
:q | viを終了します。「:quit」も同じです。変更を加えた後に、格納しないで終了する場合は「:q!」で強制終了します。 |
矢印キーはサポートされていないことがありますので注意してください。
サブコマンド | 機能 |
---|---|
h、l | hコマンドは左、lコマンドは右にカーソルを移動します。 |
←、→ | ←キーは左、→キーは右にカーソルを移動します。 |
j、k | jコマンドは下、kコマンドは上にカーソルを移動します。 |
↓、↑ | ↓キーは下、↑は上にカーソルを移動します。 |
:sh | viから一時的に抜け出します。viに戻るにはexitコマンドを実行します。 |