关于 terminal-print
Terminal Print 是一项将 iTerm2 终端输出打印到 HP 网络打印机的 Skill,适合需要留存或分享命令行内容的用户。它会清理 ANSI 控制码、生成 PDF,并可预览后打印或仅生成文件。
主要功能
- 01从剪贴板或文件读取终端文本
- 02清理 ANSI 控制码并生成 PDF
- 03支持预览、直接打印或仅生成 PDF
- 04可指定打印队列并绕过 AirPrint
- 05以等宽字体和横向版面排版
适用场景
- 01打印 iTerm2 中复制的命令输出
- 02将命令行会话保存为 PDF
- 03整理便于打印的终端日志
- 04为会议或文档分享终端输出
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ terrylica/ cc-skills --skill terminal-print安装后在 Claude Code 中输入/terminal-print确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/print-terminal.shsetup-socket-9100-queue.shreferences/airprint-blank-page-troubleshooting.mdevolution-log.mdworkflow.md详细介绍
终端打印
只需一条命令,即可将 iTerm2 中的终端输出打印到 HP 网络打印机。
自我改进技能:此技能会在使用过程中不断改进。如果说明有误、参数发生变化或需要采用变通方法,请立即修复此文件,不要拖延。仅在遇到真实且可复现的问题时才更新。
何时使用此技能
在以下情形使用此技能:
- 将终端输出打印到网络打印机
- 创建命令行会话输出的 PDF 副本
- 以便于打印的格式归档终端日志
- 在会议或文档中分享终端输出
快速开始
- 复制 iTerm2 中的终端输出(Cmd+C)
- 调用此技能
- 查看 PDF 预览,按 Enter 打印
工作原理
Clipboard → Strip ANSI → Markdown code block → pandoc/xelatex → PDF → Preview → Print
- 移除 ANSI 代码:去掉颜色和转义序列,确保黑白输出清晰
- 等宽字体:使用 DejaVu Sans Mono,确保字符对齐
- 横向排版:每行可容纳约 120 个字符
- US Letter 纸张:根据打印机设置自动检测
执行
/usr/bin/env bash << 'PRINT_EOF'
SKILL_DIR="$(cc-plugin-root doc-tools)/skills/terminal-print"
bash "$SKILL_DIR/assets/print-terminal.sh"
PRINT_EOF
选项
修改执行代码块,即可通过参数运行:
/usr/bin/env bash << 'PRINT_EOF'
SKILL_DIR="$(cc-plugin-root doc-tools)/skills/terminal-print"
bash "$SKILL_DIR/assets/print-terminal.sh" --no-preview
PRINT_EOF
| 标志 | 说明 |
|---|---|
--file FILE | 从文件读取,而非从剪贴板读取 |
--no-preview | 跳过 PDF 预览,直接打印 |
--no-print | 仅生成 PDF,不发送到打印机 |
--printer NAME | 覆盖目标打印机队列(默认:系统默认打印机) |
--bypass-airprint | 使用 socket-9100 + PostScript 队列。用于解决 HP LaserJet Pro MFP 3101/3108/3201/3208/3301/3308 AirPrint 打印空白页的问题。 |
-h, --help | 显示帮助信息 |
示例
从剪贴板打印(默认)
# Copy terminal output in iTerm2, then:
/usr/bin/env bash << 'EOF'
bash "$(cc-plugin-root doc-tools)/skills/terminal-print/assets/print-terminal.sh"
EOF
从文件打印
/usr/bin/env bash << 'EOF'
bash "$(cc-plugin-root doc-tools)/skills/terminal-print/assets/print-terminal.sh" --file ~/session.log
EOF
仅生成 PDF(不打印)
/usr/bin/env bash << 'EOF'
bash "$(cc-plugin-root doc-tools)/skills/terminal-print/assets/print-terminal.sh" --no-print
EOF
前提条件
使用 MacTeX 的 macOS 已提供所有依赖项:
| 工具 | 用途 | 状态 |
|---|---|---|
pandoc | 将 Markdown 转换为 PDF | 必需 |
xelatex | PDF 引擎 | 必需(MacTeX) |
pbpaste | 访问剪贴板 | 内置 |
lpr | CUPS 打印 | 内置 |
输出
- PDF 位置:
/tmp/terminal-output-YYYYMMDD_HHMMSS.pdf - Markdown 源文件:
/tmp/terminal-YYYYMMDD_HHMMSS.md - 清理:macOS 会定期自动清理
/tmp
故障排除
“剪贴板中没有文本”
请先在 iTerm2 中按 Cmd+C 复制终端输出。
“缺少 pandoc”或“缺少 xelatex”
安装 MacTeX:brew install --cask mactex
找不到打印机
检查打印机状态:lpstat -p -d
脚本会自动检测系统默认打印机。使用 --printer NAME 覆盖,或在环境中设置 TERMINAL_PRINT_PRINTER。
输出了空白页(或 lpr 报告成功,但什么都没打印)
这是 HP LaserJet Pro MFP 3101/3108/3201/3208/3301/3308 AirPrint 空白页错误 的典型特征——打印机的 IPP-Everywhere PDF 解释器会静默丢弃作业,而 CUPS 却报告作业已 completed。2026-05-09 已确认存在这一完全相同的症状。
快速修复:
# 1. One-time setup of bypass queue (socket-9100 + Generic PostScript PPD)
"$(cc-plugin-root doc-tools)/skills/terminal-print/assets/setup-socket-9100-queue.sh"
# 2. Reprint with --bypass-airprint
bash "$(cc-plugin-root doc-tools)/skills/terminal-print/assets/print-terminal.sh" --bypass-airprint
包含命令序列和决策树的完整诊断指南: 请参阅 airprint-blank-page-troubleshooting.md。
关键要点:不要相信 lpstat -o 或 job-state=completed——应通过 ipptool -tv ipp://<printer>.local.:631/ipp/print 查询打印机自身的作业记录,检查 job-impressions-completed 和 job-media-sheets-completed。CUPS 会撒谎;打印机(基本上)会说实话。
相关技能
- pandoc-pdf-generation - 通用 Markdown 转 PDF
- asciinema-converter - 转换终端录制内容
执行后反思
此技能完成后,在结束前检查:
- 命令是否成功? — 如果没有,请修复导致失败的指令或错误表。
- 参数或输出是否有变化? — 如果底层工具的接口发生变化,请相应更新用法示例和参数表。
- 是否需要变通处理? — 如果你不得不临时变通(使用不同标志、增加额外步骤),请更新此 SKILL.md,避免下次调用时还需要同样的变通处理。
只有在问题真实且可复现时才进行更新,不要基于猜测更新。