【小ネタ】LGTM をかっこよく生成する


LGTM

lgtm コマンドでかっこよく LGTM をキメていく記事です。

3行で

  • figletcoreutils をインストール
  • .zshrc に以下のエイリアスを張る
alias lgtm="f=\$(ls /usr/local/Cellar/figlet/2.2.5/share/figlet/fonts/*.flf | shuf -n1) && basename \$f .flf && echo -n -e '\n' && figlet -f \$f -w 400 LGTM | tee >(pbcopy)"
  • LGTM

という感じです。

目次

  • Figlet について
    • インストール
    • 使い方
    • フォント一覧
    • フォントファイル
  • coreutils について
    • インストール
    • 使い方
  • その他整形
    • ファイル名の取得
    • 出力 & ペーストボードへコピー
    • まとめる
  • エイリアスへ登録

Figlet

アスキーアートを生成するコマンド figlet を使います。

インストール

Homebrew でインストールしていきましょう。

$ brew install figlet

使い方

figlet のシンプルな使い方はこちら。
フォント名は後述のコマンドで確認できます。

$ figlet -f フォント名 文字列

フォント一覧

figlet 同梱のフォントは以下で確認できます。

$ showfigfonts

例えば rozzo というフォントを使うと、こんな感じに LGTM が生成されます。おしゃん。

$ figlet -f rozzo LGTM

888       e88'Y88  88P'888'Y88     e   e     
888      d888  'Y  P'  888  'Y    d8b d8b    
888     C8888 eeee     888       e Y8b Y8b   
888  ,d  Y888 888P     888      d8b Y8b Y8b  
888,d88   "88 88"      888     d888b Y8b Y8b 

こっちはクソデカフォント。
デフォルトだと出力幅が固定されており、大きいフォントを使う際に文字列の途中で改行されてしまうのですが、
-w で適宜出力幅を指定すると改行されなくなります。

❯ figlet -f doh -w 400 LGTM


LLLLLLLLLLL                    GGGGGGGGGGGGGTTTTTTTTTTTTTTTTTTTTTTTMMMMMMMM               MMMMMMMM
L:::::::::L                 GGG::::::::::::GT:::::::::::::::::::::TM:::::::M             M:::::::M
L:::::::::L               GG:::::::::::::::GT:::::::::::::::::::::TM::::::::M           M::::::::M
LL:::::::LL              G:::::GGGGGGGG::::GT:::::TT:::::::TT:::::TM:::::::::M         M:::::::::M
  L:::::L               G:::::G       GGGGGGTTTTTT  T:::::T  TTTTTTM::::::::::M       M::::::::::M
  L:::::L              G:::::G                      T:::::T        M:::::::::::M     M:::::::::::M
  L:::::L              G:::::G                      T:::::T        M:::::::M::::M   M::::M:::::::M
  L:::::L              G:::::G    GGGGGGGGGG        T:::::T        M::::::M M::::M M::::M M::::::M
  L:::::L              G:::::G    G::::::::G        T:::::T        M::::::M  M::::M::::M  M::::::M
  L:::::L              G:::::G    GGGGG::::G        T:::::T        M::::::M   M:::::::M   M::::::M
  L:::::L              G:::::G        G::::G        T:::::T        M::::::M    M:::::M    M::::::M
  L:::::L         LLLLLLG:::::G       G::::G        T:::::T        M::::::M     MMMMM     M::::::M
LL:::::::LLLLLLLLL:::::L G:::::GGGGGGGG::::G      TT:::::::TT      M::::::M               M::::::M
L::::::::::::::::::::::L  GG:::::::::::::::G      T:::::::::T      M::::::M               M::::::M
L::::::::::::::::::::::L    GGG::::::GGG:::G      T:::::::::T      M::::::M               M::::::M
LLLLLLLLLLLLLLLLLLLLLLLL       GGGGGG   GGGG      TTTTTTTTTTT      MMMMMMMM               MMMMMMMM

フォントファイル

フォントファイルは v2.2.5 の場合 /usr/local/Cellar/figlet/2.2.5/share/figlet/fonts/ に格納されています。確認はこちらから。

$ ls /usr/local/Cellar/figlet/2.2.5/share/figlet/fonts/*.flf

coreutils について

上記でフォントファイルが取得できたのでフォントをランダムに1つ選ぶため shuf コマンドを使います。
shuf はみんな大好きシェルユーティリティの coreutils に入っています。
https://formulae.brew.sh/formula/coreutils

インストール

こちらも Homebrew でインストールしていきます。

$ brew install coreutils

使い方

shuf はこんな感じで入力要素に対して簡単にランダムな一行を取得できます。

$ seq 1 10 | shuf -n1
7

figlet と組み合わせるとランダムにひとつフォントが選択できます。

❯ ls /usr/local/Cellar/figlet/2.2.5/share/figlet/fonts/*.flf | shuf -n1
/usr/local/Cellar/figlet/2.2.5/share/figlet/fonts/rozzo.flf

その他整形

さて、これでランダムな LTGM が使う準備ができたのであとはフォント名を出力したりペーストボードにコピーしたりします。

ファイル名の取得

basename を使ってパスからファイル名を抜き出します。
第2引数を指定することで拡張子を省略できます。

❯ basename /usr/local/Cellar/figlet/2.2.5/share/figlet/fonts/rozzo.flf .flf
rozzo

出力 & ペーストボードへコピー

figlet の出力をパイプして teepbcopy へリダイレクトします。
これで出力しつつペーストボードにもコピーできました。

❯ figlet -f rozzo LGTM | tee >(pbcopy)

888       e88'Y88  88P'888'Y88     e   e     
888      d888  'Y  P'  888  'Y    d8b d8b    
888     C8888 eeee     888       e Y8b Y8b   
888  ,d  Y888 888P     888      d8b Y8b Y8b  
888,d88   "88 88"      888     d888b Y8b Y8b 

まとめる

今までのコマンドをまとめます。
見やすさのため echo -n -e '\n' で一行空白を入れてます。

f=$(ls /usr/local/Cellar/figlet/2.2.5/share/figlet/fonts/*.flf | shuf -n1) \
&& basename $f .flf \
&& echo -n -e '\n' \
&& figlet -f $f -w 400 LGTM | tee >(pbcopy)

エイリアスへ登録

以上をワンラインにまとめ、エイリアスに登録すれば完成です!

alias lgtm="f=\$(ls /usr/local/Cellar/figlet/2.2.5/share/figlet/fonts/*.flf | shuf -n1) && basename \$f .flf && echo -n -e '\n' && figlet -f \$f LGTM | tee >(pbcopy)"

LGTM

あとは lgtm を実行すればそのままペーストできます。
レビューコメントにでもなんでもお使いください