3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

アドカレンダーに勢いで何日か枠を確保したものの、ネタが尽きてきたので今回かなりラフめな記事です🙏

ターミナルを開くたびに、ちょっとした遊び心があるとテンション上がりませんか?
以前、こちらの記事を見て面白いなと思ったので自分の環境にも導入しました。

cowsay.gif

使用するツール

  • cowsay v3.03: アスキーアートを生成するツール
  • toilet v0.3: カラフルなテキストを生成するツール
  • fortune v9708: ランダムなメッセージを生成するツール
  • lolcat v100.0.1: カラフルにテキストを表示するツール

環境構築

macOSではHomebrewを使用してインストールするのが簡単です。

brew install cowsay fortune toilet lolcat

それぞれのツールの使用

cowsay

アスキーアートが引数の文字列を出力します。
-tオプションでアスキーアートが出力する文字列、-fオプションでアスキーアートのキャラを選択できます。
なお、アスキーアートのキャラはcowsay -lで確認できます
image.png

  • -t
cowsay -t 'Hello, World!'
 _______________ 
< Hello, World! >
 --------------- 
        \   ^__^
         \  (--)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
  • -f
cowsay -f tux -t 'hello'
 _______ 
< hello >
 ------- 
   \
    \
        .--.
       |o_o |
       |:_/ |
      //   \ \
     (|     | )
    /'\_   _/`\
    \___)=(___/

toilet

ASCIIアートでテキストを表示できます。
例えば以下のような感じ。

echo 'hello' | toilet 
                                   
 #             ""#    ""#          
 # mm    mmm     #      #     mmm  
 #"  #  #"  #    #      #    #" "# 
 #   #  #""""    #      #    #   # 
 #   #  "#mm"    "mm    "mm  "#m#" 
                                   
                                   

fortune

ランダムなメッセージを生成してくれます。

fortune 
If you have to hate, hate gently.

lolcat

渡されたテキストをカラフルにして表示します

image.png

.zshrcの設定し、起動時にアスキーアートを表示

.zshrcにコードを書き、起動時に諸々のツールが表示されるようにします。
僕のターミナルでは

  • cowsayにfortuneの結果を出力させる
  • cowsayのキャラをtoiletで出力させる
  • 全体の出力をlolcatでカラフルにする
    のような設定をしています。
# cowsayのフォーマット一覧を配列で保持
cow_files=$(cowsay -l | tail -n +2 | tr -s '[:space:]' '\n')
cow_files_array=(${(f)${(s: :)cow_files}})

# 起動時にランダムにキャラが選択されるように乱数を生成
array_length=${#cow_files_array[@]}
random_index=$((RANDOM % array_length))
random_number=$RANDOM

# cowsayのキャラ名をアスキーアートで出力
toilet "$cow_files_array[$random_index]" | lolcat

# fortuneの戻り値をcowsayで出力
fortune | cowsay -f "$cow_files_array[$random_index]" | lolcat

source .zshrcで設定を読み込んでみると、意図した出力がされています。

image.png

日本語編

日本語での表示をしたい場合、「名言教えるよ!」のAPIを利用することで実現できます。
※.zshrcの読み込みごとにリクエストされるので注意。

# cowsayのフォーマット一覧を配列で保持
cow_files=$(cowsay -l | tail -n +2 | tr -s '[:space:]' '\n')
cow_files_array=(${(f)${(s: :)cow_files}})

# 起動時にランダムにキャラが選択されるように乱数を生成
array_length=${#cow_files_array[@]}
random_index=$((RANDOM % array_length))
random_number=$RANDOM

# cowsayのキャラ名をアスキーアートで出力
toilet "$cow_files_array[$random_index]" | lolcat

# 名言APIか名言を取得
meigen_response=$(curl -s -X GET "https://meigen.doodlenote.net/api/json.php?c=1&e=1")

# レスポンスJSONからmeigen, autherを取得してcowsayの引数にして出力
meigen=$(echo $meigen_response | jq -r '.[0].meigen')
author=$(echo $meigen_response | jq -r '.[0].auther')
echo "$meigen\n $author" | cowsay -f "$cow_files_array[$random_index]" | lolca

こんな感じで表示されます。
image.png

おわりに

何の生産性向上にも繋がりませんが、無駄なカスタマイズもいいですよね!

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?