【脱GUI】テキスト指向でいいんじゃない 最初の一歩 banner
1. はじめに
IT業界の新人エンジニア向けにUnixのCUIコマンドを教えようと思ったら、最近のUnixってbanner が入っていないんですね。情報を可視化する場合や連絡手段に使うケースもあるんですよね。他の表示ツールもあわせて、紹介しておきます。
2. IT技術で表現できること
まずはCUI(character User Interface) ベースで表現できることを、実際にオペレーションしながら、体感いただきましょう。
2.1. ロゴ表示や連絡用に
2.1.1. 文字を大きく見せよう ~banner ~
rockylinux8 で試してみました。
yum のリポジトリにはないのでソースファイルからビルドします。
(1) Build and Install
# cd /usr/local/src
# curl -fsSLO https://github.com/pronovic/banner/releases/download/BANNER_V1.3.5/banner-1.3.5.tar.gz
# tar xvf banner-1.3.5.tar.gz
# cd banner-1.3.5
# ./configure
# make
# make install
(2) Run
# banner "Hello"
# # ####### # # #######
# # # # # # #
# # # # # # #
####### ##### # # # #
# # # # # # #
# # # # # # #
# # ####### ####### ####### #######
2.1.2. 質実剛健でかっこよくキメよう ~figlet ~
(1) Build and Install
# dnf -y install epel-release
# dnf -y install figlet
(2) Run
# figlet Hello
_ _ _ _
| | | | ___| | | ___
| |_| |/ _ \ | |/ _ \
| _ | __/ | | (_) |
|_| |_|\___|_|_|\___/
/etc/motd に記載すれば、ssh ログインの時にメッセージを表示することが出来ます。
2.1.3. 止めちゃうよ ~wall ~
Unixにログインしている端末一斉にメッセージを送ります
Run
# wall "15:00にリブートします"
2.1.4. 牛がしゃべります ~cowsay~
(1) Build and Install
# cd /usr/local/src
# git clone https://github.com/schacon/cowsay.git
# cd cowsay/
# ./install.sh /usr/local
(2) Run
# cowsay "Hello, World"
______________
< Hello, World >
--------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
2.2. インタラクティブツールとして
2.2.1.またやっちまった ~sl~
(1) Build and Install
# dnf -y install epel-release
# dnf -y install sl
(2) Run
2.2.2. 映画の雰囲気を味わおう ~cmatrix/unimatrix~
【cmatrix】
(1) Build and Install
# dnf -y isntall autoconf
# cd /usr/local/src/
# curl -fsSLO https://github.com/abishekvashok/cmatrix/releases/download/v2.0/cmatrix-v2.0-Butterscotch.tar
# tar vxf cmatrix-v2.0-Butterscotch.tar
# cd cmatrix/
# ./configure
# make
# make instal
(2) Run
【unimatrix】: こちらはカナ表示もできます。
(1) Build and Install
# curl -L https://raw.githubusercontent.com/will8211/unimatrix/master/unimatrix.py -o /usr/local/bin/unimatrix
# chmod a+rx /usr/local/bin/unimatrix
(2) Run
# unimatrix
2 = = 4 : ワ _ ム ヌ ィ ラ 0 + ヨ イ _ 7 * " 8 ス = 1 メ 6 = : ヒ ェ 2 ウ ヒ コ 4
ス * モ ン ゥ _ 6 | ヤ " 0 + : ス - ィ " 9 < ヌ ヘ : ハ - カ タ 6 + > _ * シ - + 7 *
ゥ ャ * 7 * - ヌ + = > < ィ | < ミ ソ ァ < - ユ ミ レ ハ 3 < ェ ネ タ * - ミ * フ 9 ツ _
- タ - ケ ー ュ 2 キ + オ ニ キ ハ | + ワ * ホ 6 ツ : 5 ケ + ソ | ュ 3 ラ フ | エ ュ - - 9
2.2.3. 城の花火を見よう ~castle.vt~
【castle.vt】
(1) Build and Install
# apt-get install pv
(2) Run
# curl -s http://artscene.textfiles.com/vt100/castle.vt | pv -q -L 9600
2.2.4. 最新の天気を取得しよう ~wttr.in~
run
$ curl wttr.in/Osaka ←大阪の天気
Weather report: Osaka
\ / Clear
.-. +22(24) °C
― ( ) ― ↗ 20 km/h
`-’ 10 km
/ \ 0.0 mm
$ curl wttr.in/{Asakusa,Ginza,Ueno}?format=3 ←浅草、銀座、上野の天気
Asakusa: ⛅️ +27°C
Ginza: ☀️ +30°C
Ueno: ⛅️ +27°C
2.2.5. 時間を測ろう ~teardown~
【teardown】
(1) Build and Install
# pip install teardown
(2) Run
# teardown 3m #3分たったら終了
# teardown #ホットキーで操作
Q 終了
SPACE 一時停止
R リセット
88 ad888888b, ad8888ba,
,d88 d8" "88 8P' "Y8
888888 a8P d8
88 88,dPYba,,adPYba, aad8" 88,dd888bb, ,adPPYba,
88 88P' "88" "8a ""Y8, 88P' `8b I8[ ""
88 88 88 88 "8b 88 d8 `"Y8ba,
88 88 88 88 Y8, a88 88a a8P aa ]8I
88 88 88 88 "Y888888P' "Y88888P" `"YbbdP"'
2.3. より表現力を豊かに
2.3.1. tty の内容をアニメーションGIFにしよう ~ttyrec~
- ttyrec
http://0xcc.net/ttyrec/ は 2006年に止まっているので、https://github.com/ovh/ovh-ttyrec/ からビルド - tty2gif https://github.com/icholy/ttygif.git はX11が動かないと使えなさそうなので、 seq2gif https://github.com/saitoha/seq2gif からビルド
- GOLANG版ttygif https://github.com/sugyan/ttygif も使えそうだが、今回見送り
(1) Build and Install
# cd /usr/local/src/
# curl -fsSLO https://github.com/ovh/ovh-ttyrec/archive/refs/tags/v1.1.6.7.tar.gz
# tar xvf v1.1.6.7.tar.gz
# cd ovh-ttyrec-1.1.6.7/
# ./configure
# make
# make install
# cd /usr/local/src/
# git clone https://github.com/saitoha/seq2gif.git
# cd seq2gif/
# ./configure
# make
# make install
run
$ ttyrec ← 子シェルへ
・・・コンソール操作をするとそのままファイル記録へ
$ exit ← 終了する
・・・ xxxxx.ttyrecファイルが出来上がる
$ ls
2022-05-29.09-58-45.549479.4735.ttyrec ← ファイル確認
$ seq2gif -w 120 -h 25 < 2022-05-29.09-58-45.549479.4735.ttyrec -o output.gif
← 画面の幅と高さ、ファイル名を指定し、出力
$ ls
output.gif ← 出来上がったgifファイルはブラウザで確認
2.3.2. 画像をアスキーアートにしよう ~aalib~
静止画・動画をアスキーアート化できます。
Examplesを見ると、夢が広がります。
Portable BB Demo も凄いです。
2.3.3. ブラウザもテキストベースでいこう ~lynx/browsh~
Lynx テキストブラウザ
browsh :モダンテキストベースブラウザー: テキストコンソールから静止画・動画を見ることが出来ます。(残念ながら日本語は不可)
3. 最後に
少々ジョークネタになってしまいましたが、ITで何かを表現するための第一歩として書いてみました。職場で隠れてやっていると、先輩から「何勝手に遊んでいるんだ」とか怒られるかもしれませんが、職場の雰囲気がよいところだと、「面白そうなことやっているね」「懐かしい」といって声をかけられるかもしれませんね。何かしらのきっかけになれば、幸いです。
では、また。
4. 参考
本記事で紹介しているコマンドやサービスは、以下のサイトの情報を元にしています。
-
Banner(GPL-2.0 License)
https://github.com/pronovic/banner/ -
figlet(BSD License)
http://www.figlet.org/
https://github.com/cmatsuoka/figlet -
COWSAY(Artistic License)
https://github.com/schacon/cowsay -
SL
https://ja.wikipedia.org/wiki/Sl_(UNIX)
https://github.com/mtoyoda/sl -
CMatrix(GPL-3.0 License)
https://github.com/abishekvashok/cmatrix/ -
UniMatrix(GPL-3.0 License)
https://github.com/will8211/unimatrix -
ArtScene - castle.vt
http://artscene.textfiles.com/ -
wttr.in(Apache License 2.0)
https://github.com/chubin/wttr.in -
ovh-ttyrec(BSD License)
https://github.com/ovh/ovh-ttyrec/ -
seq2gif(GPL LIcense)
https://github.com/saitoha/seq2gif
http://saitoha.github.io/seq2gif/ -
aalib,js(MIT License)
https://github.com/mir3z/aalib.js -
AA-Project
http://aa-project.sourceforge.net/index.html
http://aa-project.sourceforge.net/bb/ -
Lynx(MIT License)
https://github.com/lynx/lynx -
browsh(LGPL License)
https://github.com/browsh-org/browsh
Discussion