
今回は、grepのように使えて、検索したキーワードを反転して表示してくれるコマンド『ack』をインストールしてみたのでその内容。 利用する環境はUbuntu 14.04 LTSを用いている。
まずはインストールから。以下のコマンドを実行し、インストールする。
bash
wget http://beyondgrep.com/ack-2.12-single-file
sudo mv ack-2.12-single-file /usr/local/bin/ack
sudo chmod 0755 /usr/local/bin/ack
試しに、以前作成したスクリプトをackしてみることにする。 以下のコマンドを実行し、ifと記述されている箇所を検索する。
shell
test@test-vm-ubuntu:~/work$ cat setip,sh | ack if
IFCFGNIC0="ifcfg-${NIC0}"
IFCFGNIC1="ifcfg-${NIC1}"
if [ -z `cat $LIST | grep "$MYSERIAL_CD"` ]; then
NIC0_HWADDR=`ifconfig $NIC0 | grep HWaddr | awk '{print $5}'`
NIC1_HWADDR=`ifconfig $NIC1 | grep HWaddr | awk '{print $5}'`
#create ifcfg-*
#ifcfg-NIC0
#ifcfg-NIC1
test@test-vm-ubuntu:~/work$
色付きで表示されてわかりやすい。
その他、以下のような使い方も出来る。
フォルダ内のファイルを一気に検索する
「-w」オプションをつける事で、対象のフォルダ内を再帰的に検索してくれる。
shelltest@test-vm-ubuntu:~/work$ ack -w grep setip,sh 9:MYSERIAL_CD=`dmidecode -t system | grep Serial | awk 'BEGIN { FS=": ";} { print $2}'` 14:if [ -z `cat $LIST | grep "$MYSERIAL_CD"` ]; then 21:HOSTNAME=`cat $LIST | grep "$MYSERIAL_CD" | awk 'BEGIN {FS=","} { print $1 }'` 24:GATEWAY=`cat $LIST | grep "$MYSERIAL_CD" | awk 'BEGIN {FS=","} { print $3 }' | awk 'BEGIN {FS="/"} {print $1}'` 27:NIC0_IPADDR=`cat $LIST | grep "$MYSERIAL_CD" | awk 'BEGIN {FS=","} { print $4 }' | awk 'BEGIN {FS="/"} {print $1}'` 28:NIC0_PREFIX=`cat $LIST | grep "$MYSERIAL_CD" | awk 'BEGIN {FS=","} { print $4 }' | awk 'BEGIN {FS="/"} {print $2}'` 29:NIC0_HWADDR=`ifconfig $NIC0 | grep HWaddr | awk '{print $5}'` 32:NIC1_IPADDR=`cat $LIST | grep "$MYSERIAL_CD" | awk 'BEGIN {FS=","} { print $5 }' | awk 'BEGIN {FS="/"} {print $1}'` 33:NIC1_PREFIX=`cat $LIST | grep "$MYSERIAL_CD" | awk 'BEGIN {FS=","} { print $5 }' | awk 'BEGIN {FS="/"} {print $2}'` 34:NIC1_HWADDR=`ifconfig $NIC1 | grep HWaddr | awk '{print $5}'` rsync_backup.sh 35: rsync -vv -a --delete ${rsource} ${rsynch} | grep -v " is uptodate"$ >> ${logfile} test@test-vm-ubuntu:~/work$
うーん、メインのサーバにも入れてしまおうかな?