2013年04月13日

コマンドtypoった時にzshから勝手につぶやくようにした

@siritori 氏が時々 「えりっくさんが本日初めてのtypoをしました。 #shellinfo」 などとtweetさせているのを見て、 うわあ僕もやりたあい! なんて思ってたのでとりあえず実現してみました。 いわゆるパクリってやつです。

事前に つぶやき専用コマンド tweet-command を試してみた: 麦汁三昧 で導入している tweet-command が必要になります。

それからタイトルでzshと書いているように zshを使っている必要があります。 必要なバージョンは知らないけど5.0.0とか使ってればきっといけるよ!

で、以上の条件が整っていれば後は簡単。 以下の関数を~/.zshrcにでも放り込んでおけばいける。

command_not_found_handler () {
  echo "zsh「ふえぇ、麦汁さんまたtypoだよぉ……。$0 なんてコマンド存在しないよぉ……」" | tweet > /dev/null 2>&1 &
  return 127
}

こうしておけば例えば

$ sl

なんてよくあるtypoした時などに

zsh「ふえぇ、麦汁さんまたtypoだよぉ……。sl なんてコマンド存在しないよぉ……」

どうやらzshちゃんはcommand not foundな時に command_not_found_handler って関数を定義していればそれを実行してくれるらしいよ!

とりあえずechoで文を吐いてそれをtweetコマンドに食わせて tweetコマンドの標準出力、標準エラー出力は盛大に投げ捨てて、 すぐ帰ってくるようにつぶやく処理はバックグラウンドに投げてる。

関数の最後のreturn 127 は再度エラーを投げ直しているような感じ。

@siritori 氏のshellinfo は回数を数えてたりもするようだけど 今回はとりあえずcommand not foundを拾うのだけ……。

タグ:zsh typo
posted by 麦汁 at 10:24 | Comment(0) | TrackBack(0) | zsh | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/355143959
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック