tarコマンドが覚えられないので、簡単に指定できるエイリアス(圧縮のみ)
概要
圧縮しようとするたびに感じるのが、tarコマンドを覚えようとしても引数が多かったり、拡張子と引数が頭の中でリンクしなかったりなど、覚えるのには少しハードルが高いと感じる。zipコマンドのようにzip fileのように指定するだけで圧縮したいと思い、以下のエイリアスを設定した。圧縮形式も選択できる。
コマンドの使い方
- 引数により圧縮形式を選べる (low=-l, middle=-m, high=-h)
- ディレクトリの指定可 (/dir/fileなど)
- 圧縮拡張子は自動で付与
- etarはeasy-tarの略 (解凍の時はunetarにしたい)
通常の圧縮(tar.gz)
$ etar file1 file1.tar.gz
出力ファイルを指定して通常の圧縮(tar.gz)
出力ファイルの拡張子の指定はいらない
$ etar file1 file2 file2.tar.gz
高圧縮(tar.gz2)
-m(middle)を引数にする
$ etar -m file1 file2 file2.tar.gz2
超高圧縮(tar.xz)
-h(high)を引数にする
$ etar -h file1 file2 file2.tar.xz
導入方法
.bash_profileに追記か、別ファイルの作ってsourceを通す プログレスの表示のためpvコマンドを使用しているので、pvのインストールが必要
$ brew install pv #mac osx $ yum install pv #centos $ yum install pv #debian
$ vim ~/.bash_profile #以下のソースコードを.bash_profileに追記する
function etar(){ #使い方 function etarUsage(){ echo 'etar: usage: etar [input file] [output file] etar -l [input file] [output file] etar -m [input file] [output file] etar -h [input file] [output file]' } #引数がない場合 if [ $# == 0 ]; then etarUsage return fi #引数がある場合 if [ ${1:0:1} = '-' ]; then #-からの引数がある場合 if [ $1 == '-h' ]; then #超高圧縮(tar.xz) if [ $# == 3 ]; then tar Jcf - $2 | pv > $3.tar.xz else tar Jcf - $2 | pv > ${2%.*}.tar.xz fi elif [ $1 = '-m' ]; then #高圧縮(tar.gz2) if [ $# == 3 ]; then tar jcf - $2 | pv > $3.tar.gz2 else tar jcf - $2 | pv > ${2%.*}.tar.gz2 fi elif [ $1 = '-l' ]; then #通常圧縮(tar.gz) if [ $# == 3 ]; then tar zcf - $2 | pv > $3.tar.gz else tar zcf - $2 | pv > ${2%.*}.tar.gz fi else #引数が存在しない etarUsage fi else #引数がファイルのみ tar.gz if [ $# == 2 ]; then tar zcf - $1 | pv > $2.tar.gz else tar zcf - $1 | pv > ${1%.*}.tar.gz fi fi } alias etar=etar
今後について
解凍のコマンドも作りたい (unetar)