先日 aha というコマンドを試しましたが,今回 terminal-to-html という似たコマンドを試してみました.
導入とhelp
$ go install github.com/buildkite/terminal-to-html/v3/cmd/terminal-to-html@latest $ which terminal-to-html /home/matoken/go/bin/terminal-to-html $ terminal-to-html --help terminal-to-html - turn ANSI in to HTML STDIN/STDOUT USAGE: cat input.raw | terminal-to-html [arguments...] > out.html WEBSERVICE USAGE: terminal-to-html --http :6060 & curl --data-binary "@input.raw" http://localhost:6060/terminal > out.html OPTIONS: --http value HTTP service mode (eg --http :6060), endpoint is /terminal --preview wrap output in HTML & CSS so it can be easily viewed directly in a browser (default: false) --log-stats-to-stderr Logs a JSON object to stderr containing resource and processing statistics after successfully processing (default: false) --buffer-max-lines value Sets a limit on the number of lines to hold in the screen buffer (and also limits the possible window height), allowing the renderer to operate in a streaming fashion and enabling the processing of large inputs. Setting to 0 disables the limit, causing the renderer to buffer the entire screen before producing any output (default: 300) --window-max-cols value Sets an upper bound on the window width (which may change based on input). Window size mainly affects cursor movement sequences (default: 400) --window-cols value Sets the initial window width. Window size mainly affects cursor movement sequences (default: 160) --window-lines value Sets the initial window height. Window size mainly affects cursor movement sequences (default: 100) --help, -h show help --version, -v print the version
早速実行してみます.既定値ではヘッダーやフッターは付かないようです.
$ cowsay hello terminal | terminal-to-html
 ________________
< hello terminal >
 ----------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||次に --preview option を試します.HTML と CSS でラップしてくれます.aha コマンドでは表現されなかった cow のしっぽの点滅も再現できています.
しかしここに HTML を貼り付けたら WprdPress と干渉して色コードが下部のタグになったり改行が入ってしまったりとひどいことになったのでとりあえず静止画です.ちなみに Asciidoctor Reveal.js へは綺麗に貼り付けできました.
$ unbuffer apt moo moo | terminal-to-html --preview | xsel
次にウェブサービスとして動かしてみます.http 経由で変換ができます.
$ terminal-to-html --http :6060 &
$ cowsay hello > input.raw
$ curl --data-binary "@input.raw" http://localhost:6060/terminal
 _______
< hello >
 -------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
$ kill %1
$ terminal-to-html --preview --http :6060 &
$ curl --data-binary "@input.raw" http://localhost:6060/terminal | head
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
1<!DOCTYPE html>
0<html>
1       <head>
5               <meta charset="UTF-8">
6               <title>terminal-to-html Preview</title>
                <style>.term-container {
   background: #171717;
1  border-radius: 5px;
0  color: white;
0 10005  100   151  6211k  95994 --:--:-- --:--:-- --:--:-- 9917k
curl: Failed writing bodyaha の方が HTML 変換のオプションが多いけど,terminal-to-html は http server 昨日が合ったりとユニークな部分も.好みで使い分けると良さそうです.
環境
$ terminal-to-html --version terminal-to-html version 3.16.3 $ dpkg-query -W golang curl curl 8.10.1-2 golang:amd64 2:1.23~2 $ lsb_release -dr Description: Debian GNU/Linux trixie/sid Release: n/a $ arch x86_64