いんちき自己解凍形式
Windowsでは自己解凍形式の圧縮ファイルが使われることがあります。あのexeファイルをダブルクリックするといきなり解凍し始めるアレです。
で、これに相当するものをUNIX環境でも使えないかなと思って、シェルスクリプトを書いてみました。自己解凍形式のtarの圧縮ファイルを作成します。ポイントはtailコマンドでデータの部分を抜き出しているところです。
ファイル: setar
#!/bin/sh # -*- shell -*- if [ $# -lt 2 ]; then echo 'usage: setar binfile directory or file...' fi binfile=$1 shift cat <<EOF > "$binfile" #!/bin/sh tail -n +4 \$0 | tar zxvf - exit 0 EOF chmod +x "$binfile" tar zcvf - $* >> "$binfile"
使い方は以下の通りです。a.binという自己解凍形式の圧縮ファイルを作成・解凍しています。
$ cd /tmp $ find . . ./a ./a/a.txt ./a/b.txt ./a/c.txt $ setar a.bin a a a/a.txt a/b.txt a/c.txt tar: ustar vol 1, 4 files, 0 bytes read, 10240 bytes written in 1 secs (10240 bytes/sec) $ cd /somewhere $ /tmp/a.bin a a/a.txt a/b.txt a/c.txt tar: ustar vol 1, 4 files, 10240 bytes read, 0 bytes written in 1 secs (10240 bytes/sec)
BUGS: 自己解凍といいつつsh、tar、gzipが必要です。