表紙にあるネコの目は、みなさんがよく使うターミナルで表示しているものです。teratermでもrloginでも画像が表示できるんです。ターミナルに画像を表示する¶ターミナルの黒い画面を使って、こんなことができます。文字(背景)に色を着けて画像のように表現することができます。文字に色をつける¶エスケープシーケンスと呼ばれる特殊な文字を使うことで文字に色をつけることができます。エスケープシーケンスは、ターミナルやエディタから入力する場合、通常の文字入力と違って比較的複雑な操作を伴います。tputコマンドを用いると比較的簡単にエスケープシーケンスを出力できます。文字の装飾は下表の通りです。rev文字への色付けもできます。環境に依存しますが、8色、または、256色が表現できます。256色を順に表示するシェル芸を作りました。お使いのターミナルが256色を表示する設定になっていないかもしれません。TERM環境変数で色数を制御してしているため、256色を表示できるように設定します。TERM='xterm-256color'文字を256色分表示してみます。sgr0;echo同様に背景色も変更できます。sgr0;echoターミナルに画像を表示する¶エスケープシーケンスで文字に色をつける方法はわかりました。これで絵を描く...のは難しそうです。私は綺麗に描く自信がありません。これでドット絵作れますね!画像を入力にして、変換できないでしょうか。実は、そういったコマンドを作った方がいらっしゃいます。いくつか種類がありますが、camというコマンドを使わせて頂きました。製作者の案内に従ってインストールしましょう。画像ファイルを指定するだけです。hoge.jpeg画像形式によっては、以下のように表示され画像が表示されない場合があります。jpegこれは、jpeg形式のファイルにはベースラインとプログレッシブという2種類があり、camはプログレッシブのjpegに対応していないためです。そこで、ImageMagicのconvertを使って、プログレッシブをベースラインに変換して表示してみます。以下のようにシェル芸で実現できます。/dev/stdout)camの出力結果をシェル芸にする¶さあ完成に近づいてきました。camが導入されていない環境でも、シェル芸でこの画像を表示したいです。camによって変換された後は、エスケープシーケンスを含んだ文字列なので圧縮した上でbase64エンコードにしてみましょう。コンパクトになりました。表示する際は、逆にbase64デコードした上でgunzipで伸長すると元に戻ります。これでどこでも画像を表示できる難読化シェル芸になりました。同じ方法で作っています。