You can read this blog in any language using google translate as follows:

Goto http://translate.google.com/
Paste URL in the box and select "Japanese for From Language" and "To Language". Then click "Translate".

English translated pages are here:
http://bit.ly/xPuXoy

你可以閱讀這個博客,在任何使用“Google”的語言翻譯

本ブログのアクセス統計: 60万アクセスを達成しました。ご訪問ありがとうございました。

60万アクセスまでの経過

2009年12月に始めた本blog。2011年7月ごろに10万アクセスを達成し、2011年12月13日には15万アクセスを達成。
その後、私も更新しておらず、アクセスは少し減りましたが、3月1日には18万アクセス。2012/4/18に20万アクセス、2012/8/21に25万アクセス、2013/1/18に30万アクセス、2013/12/17に40万アクセスを達成しました。しばらく見ていなかったら、2015/5/1に50万2584アクセスになっていました。またまた、しばらく更新しないうちに、2017/6/11に60万7197アクセスになっていました。2018/7/7 .. おお七夕 .. には63万0656アクセスになっていました。久しぶりに更新しました。

2012年9月20日木曜日

bashスクリプトの練習 - lrunコマンド

MacやLinuxは、bashやshが使えて、これとテキストレベルのツールを組み合わせると、便利名処理が簡単に作れる。

bashの練習がてら、以下のようなツールを作ってみたが便利に使えるので、報告する。。

コマンド lrun)
lrunという名前は、log + run という意味で付けた。
意味: logファイルを残しつつ、画面にも表示してコマンドを実行する。
基本はログファイルは、日付.log の名前になる。例えば2012/8/1に実行すれば、
カレントディレクトリの 20120801.log というファイルに書き出される。

コマンド引数)
lrun オプション コマンド列


オプションには以下が使える。
-d :  意味はdry run:   表示だけして、コマンド列を実行しない
-o:  意味はoverwrite: 通常はログファイルにアペンドだが、ログを消去してoverwriteする
-p 文字列 :  意味はprefix : ファイル名の日付の前に "文字列-"というプリフィックスを付ける
-s 文字列 : 意味はsuffix: ファイル名の日付とlogの間に "-文字列" という、サフィックスを付ける。
-P : 直前に使ったprefix を再利用して、ファイル名にprefixをつける。
-S : 直前に使ったsuffix を再利用して、ファイル名にsuffixをつける。

ソースコード) - たったこれだけ - 

#/bin/bash -f

fbody=`date +%Y%m%d`;
ldir=~/.scripts
pre=.lrun.prefix
suf=.lrun.suffix

while getopts dos:p:SP OPT
do
   case $OPT in
   "d") # Dryrun
      dry=1;;
   "o") # overwrite log
      ovw=1;;
   "p") #prefix
      echo $OPTARG > $pre
      fbody=$OPTARG-$fbody;; 
   "s") # suffix
      echo $OPTARG > $suf
      fbody=$fbody-$OPTARG;;
   "P") # reuse prefix
      fbody=`cat $pre`-$fbody;; 
   "S") # reuse suffix
      fbody=$fbody-`cat $suf`;;
   esac
done

fname="$fbody.log"
# shift options.
shift `expr $OPTIND - 1`

if [ $ovw ]; then
   red='>'
   msg="log is over-written to $fname ...."
else
   red='>>'
   msg="log is written to $fname ...."
fi

echo $msg
cmd="date +\"%n----Log: %c ----%n$*%n\" $red $fname; $* 2>&1 | tee -a $fname"

if [ $dry ]; then
   echo Dry run:  $cmd
else
   eval $cmd
fi

blog comments powered by Disqus