Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ターミナル出力の色付け / Terminal output coloring
Search
Yoichi NAKAYAMA
September 08, 2020
Programming
0
170
ターミナル出力の色付け / Terminal output coloring
Yoichi NAKAYAMA
September 08, 2020
Tweet
Share
More Decks by Yoichi NAKAYAMA
See All by Yoichi NAKAYAMA
git-jumpを解放する / loosen editor dependency of git-jump
yoichi
0
1.4k
小さなOSS貢献の実践例 / A practical example of a small contribution to OSS
yoichi
0
140
パイプの話 / on pipe
yoichi
0
510
バイナリリーディング / Binary Reading
yoichi
0
380
OSS開発を楽しく続けてきた話
yoichi
0
830
Other Decks in Programming
See All in Programming
PicoRuby on Rails
makicamel
2
130
なぜ適用するか、移行して理解するClean Architecture 〜構造を超えて設計を継承する〜 / Why Apply, Migrate and Understand Clean Architecture - Inherit Design Beyond Structure
seike460
PRO
3
780
チームのテスト力を総合的に鍛えて品質、スピード、レジリエンスを共立させる/Testing approach that improves quality, speed, and resilience
goyoki
5
930
AI コーディングエージェントの時代へ:JetBrains が描く開発の未来
masaruhr
1
190
iOS 26にアップデートすると実機でのHot Reloadができない?
umigishiaoi
0
130
『自分のデータだけ見せたい!』を叶える──Laravel × Casbin で複雑権限をスッキリ解きほぐす 25 分
akitotsukahara
2
640
Blazing Fast UI Development with Compose Hot Reload (droidcon New York 2025)
zsmb
1
300
チームで開発し事業を加速するための"良い"設計の考え方 @ サポーターズCoLab 2025-07-08
agatan
1
440
Webの外へ飛び出せ NativePHPが切り拓くPHPの未来
takuyakatsusa
2
560
AI時代の『改訂新版 良いコード/悪いコードで学ぶ設計入門』 / ai-good-code-bad-code
minodriven
20
8.1k
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
270
脱Riverpod?fqueryで考える、TanStack Queryライクなアーキテクチャの可能性
ostk0069
0
250
Featured
See All Featured
Unsuck your backbone
ammeep
671
58k
The Straight Up "How To Draw Better" Workshop
denniskardys
235
140k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Bash Introduction
62gerente
613
210k
Six Lessons from altMBA
skipperchong
28
3.9k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
GitHub's CSS Performance
jonrohan
1031
460k
Optimizing for Happiness
mojombo
379
70k
We Have a Design System, Now What?
morganepeng
53
7.7k
GraphQLとの向き合い方2022年版
quramy
49
14k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Transcript
ターミナル出力の色付け Yoichi Nakayama
ターミナル出力 プログラムが標準出力(stdout)や標準エラー出力(stderr)に書き込んだ内容はプログ ラムを実行したターミナル(terminal, 端末)上に出力される
ターミナル出力の例: ls ディレクトリ、実行権限が付いたファイルに色が付く
ターミナル出力の例: git diff ヘッダ、追加行、削除行に色が付く
ターミナル出力の例: git diff with delta シンタックスハイライト+行内の変更箇所にも色が付く https://github.com/dandavison/delta
ターミナル出力の例: emacs -nw モードに応じたシンタックスハイライト
色の付いた出力 普通に文字列を出力したときは単色だった プログラムによってはカラフルな出力がされていた →どうやったら色付けできるんだろう?
ls の出力を見てみる 出力をodにパイプしてバイナリダンプ 文字列と改行(0a)のみで特に変わったものは入ってない 改行?元々は一行の出力だったのに
感づかれてしまった パイプに気づいてlsは出力内容を変える→このままでは調べられない
回避 --color オプションを付けるとパイプしても色が付く→よさそう
色付き出力 色付き文字の手前に esc [ (CSI = Control Sequence Indicator)で始まる何か https://en.wikipedia.org/wiki/ANSI_escape_code#CSI_sequences
試してみる • echo -e で \xNN をバイトの16進表現と解釈してくれる • \x1b =
esc • esc [ 30~37 m 文字色設定 • esc [ 0 m リセット
まとめ • CSI シーケンスを出力してターミナル出力を制御できる • esc [ 30~37 m で文字色を8色から選んで設定できた
• パイプを検出すると色付けをやめる理由:余計なものが付くから ◦ ls | grep ^dir1$ ターミナルの色付け完全に理解した!
色付けの例: emacs -nw M-x list-colors-display → 8色で終わりじゃない
256 colors • 0~7: standard colors (ESC [ 30~37 m
と同じ) • 8~15: high intensity colors (ESC [ 90~97 m と同じ) • 16~231: 16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5) • 232~255: grayscale
True Color (24bit) R(0~255), G(0~255), B(0~255) supported terminals: https://gist.github.com/XVilka/8346728#terminals--true-color
応用: longcat -pixterm ▄ (U+2584, LOWER HALF BLOCK) の文字色と背景色を指定している https://yoichi22.hatenablog.com/entry/2020/07/12/110838
おしまい ターミナル出力のさらなるトピック • DA1, DA2, DA3 • Sixel Graphics •
...