第1部:ダウンロード
ダウンロード 1
- ダウンロードには
curl
もしくはwget
を使う-
curl
: OS X/Cent OS 標準搭載 -
wget
:curl
に比べて高機能
-
- どちらを使っても良い
- OS Xで
wget
を使いたい場合はインストールが必要 - MacPorts なら
sudo port install wget
- Homebrew なら
sudo brew install wget
- OS Xで
- ただ,普通の用途であればどちらでもできるが,たまに片方でしかできないこともあるので両方使えると良い
ファイルのダウンロード
$ wget http://www.ring.gr.jp/archives/GNU/gzip/gzip-1.6.tar.xz
$ curl -O http://www.ring.gr.jp/archives/GNU/gzip/gzip-1.6.tar.xz
-
curl
でファイルをディスクに保存するときには-O
が必要- 標準では標準出力に書き出すため
- ファイル名を指定するときには
-o FILENAME
-
wget
は標準ではURLから判断されたファイル名に書き出す- ファイル名を変えたければ
-O FILENAME
- 標準出力は
-O -
- ファイル名を変えたければ
課題
ftp://ftp.hgc.jp/pub/mirror/ncbi/snp/00readme.txt
の内容をless
で確認しなさい.ただし,ファイルを手元に保存することなく確認すること.
curl
とwget
の両方で行うこと.
解答
$ curl ftp://ftp.hgc.jp/pub/mirror/ncbi/snp/00readme.txt|less
$ wget -O - ftp://ftp.hgc.jp/pub/mirror/ncbi/snp/00readme.txt|less
curl
もwget
も標準エラー出力に途中経過を書き出すのでless
の表示がお
かしくなるがrを押して Refresh してあげれば直る.
第2部:圧縮ファイル
圧縮ファイルの種類
名前 | 拡張子 | 特徴 |
---|---|---|
Zip | .zip | 一般的.人に渡すファイルはこれにしておくのが無難 |
7Zip | .7z | 高圧縮率 |
gzip | .gz | Unix では一般的 |
bzip2 | .bz2 | gzip より高圧縮率だが,遅い |
lzop | .lzo | gzip より早いが,圧縮率は若干劣る |
xz | .xz | bzip2 より高圧縮率.展開はgzip並の速度だが圧縮はかなり遅い |
Compressor と Archiver 1
-
Unix では Compressor と Archiver を明確に区別する
-
Compressor は圧縮のみを行う
-
gzip
/bzip2
はこちら
-
-
Archiver はファイルをまとめる
-
tar
やcpio
など
-
-
Zip や 7-Zip は両方の機能を合わせ持つ
- ただ, Zip や 7-Zip は Unix にあって Windows にはないファイル属性が欠落するので Unix ではあまり使われない
Compressor と Archiver 2
-
ファイルをまとめて圧縮するためには Archiver で1ファイルにまとめてから Compressor で圧縮するのが一般的
-
Archiver は
tar
は最もよく使われる -
Compressor は
gzip
やbzip2
が一般的-
xz
もよく使われるが,gzip
やbzip2
に比べると使われる場面は減る
-
tar
の使い方 1
- 基本的な使い方
tar COMMAND FILES...
-
COMMAND
は以下の通り-
x
: 展開 (Extract) -
c
: 作成 (Create) -
t
: リストを表示 (List) - 最低一つは指定する.
-
はいらない
-
-
FILES
は格納,もしくは展開したいファイル名を指定する- アーカイブのファイル名ではない
- アーカイブのデータはデフォルトでは標準入出力から
tar
の使い方 2
例
$ cd ~/Library
$ tar c Logs > ~/Desktop/logs.tar
$ cd ~/Desktop
$ cat logs.tar|tar x
- 展開の時はファイル名を省略するとすべて展開される
tar
の使い方 2
例
$ cd ~/Library
$ tar cf ~/Desktop/logs.tar Logs
$ cd ~/Desktop
$ tar xf logs.tar
- コマンドに
f
を指定すると標準入出力でなくファイル名を指定してアーカ
イブを読み書きできる -
f
は必ずコマンドの最後に指定すること- 最近の実装は大丈夫だが,いけてない実装だと
f
の直後からファイル名だと解釈される場合がある
- 最近の実装は大丈夫だが,いけてない実装だと
Compressor の使い方 1
-
gzip
,bzip2
,xz
,lzop
はどれもだいたい同じオプションを持つ - 基本的な使い方
- 圧縮
gzip FILENAME
- 伸長
gzip -d FILENAME.gz
- 圧縮
- どれも元のファイルを削除するので要注意!
-
-k
を付けるとことで削除しないこともできるが,gzip
がバージョンによっては対応していないことがある
-
Compressor の使い方 2
- Compressor もフィルタとして動作できるように設計されている
-
-c
を付けることで標準出力に結果を出力できるようになる
例:
$ cd ~/Desktop
$ gzip -c logs.tar > logs.tar.gz
$ cat logs.tar.gz|gzip -dc > uncompressed-logs.tar
tar
と圧縮を組み合わせる 1
- ファイルを配るときには
tar
で一つにまとめてから Compressor で圧縮して配るのでよく組み合わせて使われる
$ cd ~/Library
$ tar c Logs|gzip -c > ~/Desktop/logs-compressed.tar.gz
$ cd ~/Desktop
$ cat logs-compressed.tar.gz|gzip -dc|tar x
tar
と圧縮を組み合わせる 2
- あまりにもよく使うのでパイプを明示的に書かなくても省略記法が存在する
$ cd ~/Library
$ tar czf ~/Desktop/logs-compressed.tar.gz Logs
$ cd ~/Desktop
$ tar xzf logs-compressed.tar.gz
-
z
をつけることでgzip
圧縮を行う -
j
でbzip2
,J
でxz
- その他の圧縮形式はパイプで使う
tar
の拡張機能
tar
はいくつか実装があり,独自の拡張機能がある場合がある
- OS X には BSD 由来の tar が搭載されている
- 展開時には圧縮形式のコマンドを省略可能
- 自動判別はファイル名によらないのでパイプ経由でも OK
- Zip や ISO ファイルも作ったり展開したりできる
- Linux に多くの場合 GNU tar が搭載されている
- 圧縮・展開時には
a
をコマンドに指定することでファイル名から自動判別される
- 圧縮・展開時には
課題
http://tukaani.org/xz/xz-5.2.1.tar.bz2
にあるファイルをダウンロードフォルダに展開しなさい.ただし,展開前のファイルを一度ローカルに保存してはならないものとする.
解答
$ curl http://tukaani.org/xz/xz-5.2.1.tar.bz2|bzip2 -dc|tar x
普通は手元に一度保存してからやる場合が多いです.こういうことはできるけどあまりしない
余談 1
- Zip の圧縮展開には
zip
,unzip
コマンドが使える - 7-Zip の圧縮展開には
7z
コマンドが使える- インストールされていなければ
sudo port install p7zip
-
7z
は Zip も作れて,普通の Zip 展開ソフトで展開できるがzip
コマンドを使うより圧縮率は高い
- インストールされていなければ
- 圧縮形式は他にもいろいろある
-
lzip
,compress
,rzip
とか - 一長一短だが人に配るときには
gzip
,bzip2
が無難
-
余談 2
- ファイルの拡張子が失われて,ファイル形式が分からなくなった場合には
file
コマンドが便利- たまに間違うので鵜呑みにしないこと
- ファイルの先頭にある Magic Number で判別している
$ file zlib-1.2.8.tar.xz
zlib-1.2.8.tar.xz: xz compressed data
$ file fastqc_v0.11.3_source.zip
fastqc_v0.11.3_source.zip: Zip archive data, at least v2.0 to extract
$ file pypy-2.5.1-centos6.tar.bz2
pypy-2.5.1-centos6.tar.bz2: bzip2 compressed data, block size = 900k
まとめ
- ファイルのダウンロードには
curl
もしくはwget
を使う - Archiver と Compressor は違う
- 普段は
tar
で圧縮,展開を行う - パイプを使うことで様々な処理を組み合わせられる