ojichatグラフシェル芸とは?
コマンド
以下のコマンドで目的の画像が出力できます。
$ echo "digraph{👴[fontsize=100]👴🏻[fontsize=100]👴🏼[fontsize=100]👴->👴🏻[label=\"`ojichat|grep -Eo '.{1,14}'`\"]👴🏻->👴🏼[label=\"`ojichat|grep -Eo '.{1,14}'`\"]👴🏼->👴[label=\"`ojichat|grep -Eo '.{1,14}'`\"]}"|dot -Tpng>/images/o.png
ojichatの出力がランダムであるため、エッジのキャプションは実行するたびに変わります。
前提条件
graphviz
とojichat
がインストールされていること。
コマンド解説
3つのノードをエッジでつないだグラフを描きます。
$ echo "digraph{A->B B->C C->A}"|dot -Tpng>/images/0.png
$ echo "digraph{A->B[label=\"from A to B\"] B->C[label=\"from B to C\"] C->A[label=\"from C to A\"]}"|dot -Tpng>/images/1.png
ノードに👴(OLDER MAN)を入れます。
$ echo "digraph{👴->👴🏻[label=\"from 👴 to 👴🏻\"] 👴🏻->👴 🏼[label=\"from 👴🏻 to 👴🏼\"] 👴🏼->👴[label=\"from 👴🏼 to 👴\"]}"|dot -Tpng>/images/2.png
👴🏻と👴🏼は👴に skin tone modifier を付けたものです。
エッジのキャプションをojichat
の出力にします。
$ echo "digraph{👴->👴🏻[label=\"`ojichat`\"]👴🏻->👴🏼[label=\"`ojichat`\"]👴🏼->👴[label=\"`ojichat`\"]}"|dot -Tpng>/images/3.png
ojichat
の出力が長すぎるので改行します。grep -Eo '.{1,14}'
として、14文字で改行します。
$ echo "digraph{👴->👴🏻[label=\"`ojichat|grep -Eo '.{1,14}'`\"]👴🏻->👴🏼[label=\"`ojichat|grep -Eo '.{1,14}'`\"]👴🏼->👴[label=\"`ojichat|grep -Eo '.{1,14}'`\"]}"|dot -Tpng>/images/4.png
👴のサイズを調整します。
graphviz
でfontsize
を指定します。
$ echo "digraph{👴[fontsize=100]👴🏻[fontsize=100]👴🏼[fontsize=100]👴->👴🏻[label=\"`ojichat|grep -Eo '.{1,14}'`\"]👴🏻->👴🏼[label=\"`ojichat|grep -Eo '.{1,14}'`\"]👴🏼->👴[label=\"`ojichat|grep -Eo '.{1,14}'`\"]}"|dot -Tpng>/images/o.png
所感
これをシェル芸botに投げたとき、「地獄」という反応が多かったんですけど、僕としては「優しい世界」のつもりでやっていました。
以上です。