conohasayで楽しいターミナル生活を


この記事は ConoHa Advent Calendar 2017の12日目の記事です。

美雲このはの超☆お悩み相談室 (前) < | > (次)ConoHaで爆速プロキシサーバーを試す(Ubuntu 16.04 + squid


こんにちは、ひろのぶです。

昔からUnix系OSにある有名なジョークコマンドでの一つに cowsay があります。ウシなどのアスキーアートと一緒にテキストを表示してくれるプログラムで、技術勉強会のデモなどでもよく使われるコマンドです。

# fortune | cowsay
 _______________________________________
/ All the really good ideas I ever had  \
| came to me while I was milking a cow. |
|                                       |
\ -- Grant Wood                         /
 ---------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

cowsayにはポニーが表示されるものポケモンが表示されるものなど、色々と亜種があります。というわけで今回ConoHa Advent Calendarと言うことで、conohasayコマンドを作ってみました。

インストール

LinuxおよびmacOSに対応しています。

README.mdをご覧ください

Dockerがインストールされているなら、下記コマンドですぐに試すことができます。

docker run -i hironobu/conohasay -h

使い方

コマンドの引数、もしくは標準入力から渡された内容をキャラクターが喋ってくれます。単純な使い方は下記です。

conohasay  "Hi, I'm ConoHa Mikumo!"

実行結果

いい感じですね。ただ、ちょっと荒いかな...?

もしターミナルのサイズが十分にある場合は、-sオプションでサイズを変更できます。指定できるのはs, m, lのどれかです。デフォルトでは一番小さいサイズ(sサイズ)で表示されます。

conohasay -s m -c conoha "Hi, I'm ConoHa Mikumo!"

このは先生以外のキャラも表示できます。-cオプションでキャラを変更してみましょう。

完全なオプションはREADME.mdをご覧ください

実践的な使い方?

cowsayにはfortuneコマンドを渡すのが定番ですが、hostnamewuptimeあたりをパイプで渡すのもよくやります。下記は w コマンドの出力をconohasayに渡した例です。

w -s | conohasay -s m 

また、定番のカスタマイズとして/etc/motdをいじってログインメッセージを変更するというのもあります。Qiitaにも多くの記事があります。

「motd」の検索結果 - Qiita

ConoHaの場合、modのカスタマイズにはスタートアップスクリプトを使うと良いでしょう。以下はCentOS向けのシンプルなスクリプトです。

#cloud-config

runcmd:
  - curl -sL https://github.com/hironobu-s/conohasay/releases/download/current/conohasay-linux.amd64.gz | zcat > /usr/bin/conohasay 
  - chmod +x /usr/bin/conohasay
  - conohasay このホストは $(hostname) だよ! > /etc/motd

こうするとVPSにログインすると、キャラクターがホスト名を喋ってくれます。

実装とか

内部的にcowsayを呼び出すようにすればすぐ作れるかなーと思ってたのですが、「吹き出しをキャラの右に出したいなー」とか考えてたら結局ゼロから作ることになりました。

あと余談ですが、conohasayはオリジナルのcowsayをリスペクトしているため、キャラクターはCowという構造体で扱われています。内部的にはみんなウシ扱いなんですね (pokemonsayもそうなってたりします)

おわりに

それではconohasayで楽しいターミナルライフを!
もし気に入ったらGitHubでスターください

hironobu-s/conohasay

enjoy!