ayucat.ch 2015-16

id:ayucatのぶろぐ (Nexus 5 (2015) / iPhone 6s / Galaxy S6 edge / iOS 9 / Ubuntu Trusty / Android 6.0 Marshmallow / Thunderbird / AWS / クラブ / 祭り / 花火 / 海 / 野外フェス)

面倒なことはしない: bash入門(I)

毎回オプションを記述するのは面倒なので、以下シェルスクリプトを書いた。

自由を楽しもう computer life: ffmpegで携帯810Tで再生可能な動画形式へコンバート

とあるけど、

#!/bin/sh
OPTION="-y -t 20 -vcodec mpeg4 -b 64k -r 15 -s 176x144 -acodec aac -ar 16000 -ab 12.2k -ac 1 -flags bitexact"
filename(){
awk '
BEGIN{
op="'$1'";
for(i=length(op);i>=0;i--){
if(substr(op,i,1)==".")break;
}
i--;
if(i<0){
i=length(op);
}
print substr(op,0,i);
}'
}
for i in $*
do
echo $i
echo /usr/bin/ffmpeg $OPTION -i $i `filename $i` .3g2
/usr/bin/ffmpeg $OPTION -i $i `filename $i`.3g2
done

は、どうせbash使ってんだろーから、

#!/bin/bash
OPTION="-y -t 20 -vcodec mpeg4 -b 64k -r 15 -s 176x144 -acodec aac -ar 16000 -ab 12.2k -ac 1 -flags bitexact"

for i in $@
do
    PROG="ffmpeg $OPTION -i $i ${i/.avi/.3g2}"
    echo $i
    echo $PROG
    $PROG
done

くらいなもんで、十分な気がする。aviは適当に変えるか、ころころ変わるなら、

    PROG="ffmpeg $OPTION -i $i ${i%.*}.3g2"

かなぁ〜〜〜。

FileName:/usr/local/bin/movie

ってのは私なら、

~/bin/movie

にするかなぁ。。。趣味の問題。

xargsについては触れようかと思ったけど、この場合には、手軽さ&綺麗さに貢献しないので、止めた。

まとめ

ここまで「凝った」awkを書いてしまうのはウェブ上に古いドキュメントがどっさり残ってるせーだろうなーと。。。
ここで、awkなのも分かんないけど、

{ sub(/\..+$/, ""); print }

を利用して、

awk '{ sub(/\..+$/, ""); print }'

あたりで十分だと思うし、普通はsed

s/\..+$//g

なので、

sed 's/\..+$//g'

だよね。。。/bin/dashとか使ってんのかもしれんので、一応><