できること
圧縮されているファイルを、ファイルの拡張子にあわせて解凍すると言う作業は、日常的に多いものです。今回は、圧縮ファイルの拡張子を判断して自動的に解凍するシェルスクリプトを作成してみます。
圧縮ファイルと実行コマンド、パラメータ一覧
拡張子 パラメータ
tgz | tar.gz tar zxvf
tar.Z gunzip
tar.bz2 tar xvfj
tar tar xvfz
gz gunzip
Z gunzip
bz2 bunzip2
zip unzip
こうしたコマンドやパラメータを覚えておくことは大切ですが、頭の経年劣化とともに、つい思い出すことができず、Googleで検索して調べると言ったことは、往々にしてあることです。
実行例
# 圧縮ファイルを解凍する便利な unCompコマンド
$ unComp comp.tar.gz2
作成
まずファイルを作ります。ファイル名は unComp とします
# unComp というファイルを作成
$ :> unComp
# vim で unComp を開く
$ vim unComp
unCompファイルに以下の内容を貼り付ける
#!/bin/bash
#
#圧縮されているファイルを解凍する
# unComp を /usr/local/bin/にコピーすると
# 通常のコマンドとして本実行ファイルを利用する事が出来ます。
#
# cp unComp /usr/local/bin/unComp
#
# 実行例
# $ unComp filename(圧縮ファイル)
#
if [ $# -ne 1 ]; then
echo ""
exit ;
fi
#
case $1 in
*.tgz | *.tar.gz) tar zxvf $1 ;;
*.tar.Z) gunzip $1
tar xvf $( echo "$1" | sed 's/\.Z$//')
;;
*.tar.bz2) tar xvfj $1;;
*.tar) tar xvfz $1;;
*.gz) gunzip $1;;
*.Z) gunzip $1;;
*.bz2) bunzip2 $1;;
*.zip) unzip $1;;
*) echo "ファイルの拡張子が対応していません:$1"
esac
exit ;
作成したファイルには日本語が含まれているため、unCompファイルを UTF-8に変換しておきます。
wLuをつかってUTF-8に変換するとさらに便利です。
# unComp ファイルをnkf -wLu でUTF-8に変換
$ nkf -wLu unComp > unComp.txt
# unComp.txtをunCompにリネームします
$ mv unComp.txt unComp
# 作成したunCompコマンドファイルを/usr/local/bin にコピーします
$ sudo unComp /usr/local/bin/
# コマンドが配置されたかを確認
$ which unComp
$ /usr/local/bin/unComp
使い方
# 圧縮ファイルの拡張子を気にせずをコマンド一発で解凍する
# 実行
$ unComp sample.zip
圧縮ファイルの拡張子に併せたコマンドを思い出したり、さらにはコマンドのパラメータをGoogleで調べたりする必要が減ります。必要に応じて、ソースにコマンドやパラメータを追加すれば、さらに拡張できます。
便利ですね。