digやhostコマンドが劇的に便利になるbash関数を作りました
ブラウジング中にふとDNSレコードを調べようとする時、ドメインやホスト名だけを切り出すのは手間ですよね。
そこで、digやhostコマンドの引数にhttp://
などが含まれていても動くbash関数を作りました。
実行サンプル
hostやdigコマンドが、ブラウザのURL欄からコピペしたままで動きます!
$ host http://www.yahoo.co.jp/ www.yahoo.co.jp is an alias for www.g.yahoo.co.jp. www.g.yahoo.co.jp has address 203.216.231.189
$ dig http://www.yahoo.co.jp/ ; <<>> DiG 9.8.3-P1 <<>> www.yahoo.co.jp ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52306 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;www.yahoo.co.jp. IN A ;; ANSWER SECTION: www.yahoo.co.jp. 199 IN CNAME www.g.yahoo.co.jp. www.g.yahoo.co.jp. 19 IN A 203.216.243.240 ;; AUTHORITY SECTION: www.g.yahoo.co.jp. 585 IN NS gns01.yahoo.co.jp. ;; ADDITIONAL SECTION: gns01.yahoo.co.jp. 666 IN A 118.151.254.132 ;; Query time: 20 msec ;; SERVER: 192.168.1.1#53(192.168.1.1) ;; WHEN: Thu Apr 25 20:08:13 2013 ;; MSG SIZE rcvd: 105
もちろん引数付きの以下のコマンドにも対応しています。
$ host -t ns http://nifty.com/
$ host http://nifty.com/ -t ns
$ dig mx http://www.nifty.com/
$ dig http://www.nifty.com/ mx
利用方法
.bash_profile
などに後述のコードを追加してください。
その後に追加内容を反映するため、ターミナルを立ち上げ直すか、
source ~/.bash_profile
を行ってください。準備は以上です。
$ vi ~/.bash_profile $ source ~/.bash_profile
コード
function host() { bin=`which host` check_host=`echo $@ | perl -lpe 's/(.* )?https?:\/\/([^ ^\/]+)[^ ]*( .*)?/$1$2$3/'` $bin $check_host } function dig() { bin=`which dig` check_host=`echo $@ | perl -lpe 's/(.* )?https?:\/\/([^ ^\/]+)[^ ]*( .*)?/$1$2$3/'` $bin $check_host }
参考サイト
エイリアスの代替としての関数 / bashメモ
http://d.hatena.ne.jp/perlcodesample/20091016/1248437426