mdcat – 端末でMarkdownを美しく表示する(CommonMark対応)

整形・フォーマット
スポンサーリンク

mdcat は Markdown(CommonMark)をターミナル上で読みやすく整形して表示するコマンドです。コードブロックのシンタックスハイライト、リンク表示、対応端末ではインライン画像の描画にも対応します。iTerm2/kitty/WezTerm/VS Code の一部端末では見出しジャンプなどの拡張も使えます。 (man.archlinux.org)
実務では、README.md や設計メモをローカル端末だけで素早くプレビューしたいときに使います。 (man.archlinux.org)

構文(Syntax)

mdcat [OPTIONS] [FILE]...
mdless [OPTIONS] [FILE]...   # mdcat の同梱/同機能。既定でページャ表示
  • FILE を省略または - のときは標準入力を読みます。
  • mdlessmdcat の別名で、既定でページャ(例: less)に流します。 (man.archlinux.org)

主なオプション一覧

オプション説明使用例
-p, --paginate出力をページャに流す(mdless の既定)mdcat -p README.md
-P, --no-pagerページャを使わない(mdcat の既定)mdcat -P README.md
-c, --no-colour文字装飾(色・スタイル)を無効化mdcat -c note.md
--ansi端末検出をせず ANSI のみで整形mdcat --ansi file.md
--columns N折り返しに使う最大カラム数を指定mdcat --columns 100 file.md
-l, --localリモート資源(HTTP/S 等)へアクセスしないmdcat -l doc.md
--fail読み込み失敗で即座に終了(既定は継続)mdcat --fail a.md b.md
--detect-terminal端末を検出して名前を表示して終了mdcat --detect-terminal
--completions SHELL補完スクリプトを出力(bash/zsh/fish/powershell/elvishmdcat --completions zsh
-h, --helpヘルプ表示mdcat --help
-V, --versionバージョン表示(ビルトイン機能の情報付き)mdcat --version
(機能と書式は Arch の man に準拠) (man.archlinux.org)

実行例

基本:Markdownファイルを整形して表示

説明:色や強調、コードのハイライト付きで端末に出力します。
コマンド

mdcat README.md

出力例:整形済みテキスト(端末依存で太字/斜体/打消しが反映)。 (man.archlinux.org)

ページャでゆっくり読む(mdless 相当)

説明less などのページャ経由で表示(※ページャ経由だと画像は表示されません)。
コマンド

mdcat --paginate long_doc.md    # または: mdless long_doc.md

出力例:ページャ上に整形済みMarkdown。※ページャはプロプライエタリ拡張を扱えないため、画像は無効化されます。 (man.archlinux.org)

端末の対応機能を確認(画像対応の有無など)

説明:検出した端末名を表示。対応端末ではインライン画像が使えます。
コマンド

mdcat --detect-terminal

出力例(一例)

kitty

(対応端末例:iTerm2/kitty/Terminology/WezTerm/VS Code 1.80+) (man.archlinux.org)

リモート画像を禁止してオフラインで表示

説明:HTTP(S) 画像を取りに行かず、ローカル画像のみを利用します(リモート画像はリンク扱い)。
コマンド

mdcat --local report.md

出力例:外部画像はリンク表示。 (man.archlinux.org)

エラー例:--fail で途中失敗時に即終了

説明:存在しないファイルがあると、その時点で非0終了。
コマンド

mdcat --fail ok.md notfound.md more.md
echo $?

出力例(例)

mdcat: notfound.md: No such file or directory
1

--fail 指定時は最初の失敗で止まります) (man.archlinux.org)

関連コマンド

  • cat:プレーンテキストをそのまま出力(Markdown整形なし)。 (man.archlinux.org)
  • batcat 互換でシンタックスハイライト(Markdownは整形ではなく色付け中心)。 (man.archlinux.org)
  • grip:GitHub風にHTMLでプレビュー(ブラウザ向け)。
  • pandoc:Markdown→HTML/PDF/他形式に変換。

備考

  • 端末対応:画像描画は iTerm2/kitty/Terminology/WezTerm/VS Code(1.80+) 等の対応端末でのみ有効。非対応やページャ使用時は画像を無効化して ANSI 整形のみ。SVG は Terminology では端末側機能、iTerm2/kitty/WezTerm/VS Code では resvg でラスタライズして表示します。 (man.archlinux.org)
  • 機能制限:CommonMark 0.30 + 一部拡張(タスクリスト/取り消し線)に対応。脚注は未対応、表セル内の折り返しやインライン装飾にも制限があります。HTMLはそのまま出力されます。 (man.archlinux.org)
  • ネットワーク:リモート画像取得には内部で curl を利用(プロキシ環境変数に対応)。--local で無効化可能。 (man.archlinux.org)
  • 環境変数MDCAT_PAGER/PAGER(ページャ)、COLUMNS/ROWS(端末サイズ代替)、MDCAT_LOG(トレース出力)、TERM/TERM_PROGRAM(端末検出)、http_proxy など(curl準拠)。 (man.archlinux.org)
  • 導入:パッケージ配布や cargo install mdcat が案内されています。macOS等のパッケージでも提供あり。 (GitHub)
  • メンテ状況:公式リポジトリは 2025-01-10 にアーカイブ化(Read-only)。将来の更新性に留意してください。 (GitHub)

参考

スポンサーリンク
Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント