mcpField
T
terminal-print

terminal-print

github.com/terrylica文档处理1130 次安装1 天前更新
代码仓库

关于 terminal-print

Terminal Print 是一项将 iTerm2 终端输出打印到 HP 网络打印机的 Skill,适合需要留存或分享命令行内容的用户。它会清理 ANSI 控制码、生成 PDF,并可预览后打印或仅生成文件。

主要功能

  1. 01从剪贴板或文件读取终端文本
  2. 02清理 ANSI 控制码并生成 PDF
  3. 03支持预览、直接打印或仅生成 PDF
  4. 04可指定打印队列并绕过 AirPrint
  5. 05以等宽字体和横向版面排版

适用场景

  1. 01打印 iTerm2 中复制的命令输出
  2. 02将命令行会话保存为 PDF
  3. 03整理便于打印的终端日志
  4. 04为会议或文档分享终端输出

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/terrylica/cc-skills --skill terminal-print

安装后在 Claude Code 中输入/terminal-print确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
print-terminal.sh
setup-socket-9100-queue.sh
references/
airprint-blank-page-troubleshooting.md
evolution-log.md
workflow.md

详细介绍

终端打印

只需一条命令,即可将 iTerm2 中的终端输出打印到 HP 网络打印机。

自我改进技能:此技能会在使用过程中不断改进。如果说明有误、参数发生变化或需要采用变通方法,请立即修复此文件,不要拖延。仅在遇到真实且可复现的问题时才更新。

何时使用此技能

在以下情形使用此技能:

  • 将终端输出打印到网络打印机
  • 创建命令行会话输出的 PDF 副本
  • 以便于打印的格式归档终端日志
  • 在会议或文档中分享终端输出

快速开始

  1. 复制 iTerm2 中的终端输出(Cmd+C)
  2. 调用此技能
  3. 查看 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必需
xelatexPDF 引擎必需(MacTeX)
pbpaste访问剪贴板内置
lprCUPS 打印内置

输出

  • 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 会撒谎;打印机(基本上)会说实话。

相关技能

执行后反思

此技能完成后,在结束前检查:

  1. 命令是否成功? — 如果没有,请修复导致失败的指令或错误表。
  2. 参数或输出是否有变化? — 如果底层工具的接口发生变化,请相应更新用法示例和参数表。
  3. 是否需要变通处理? — 如果你不得不临时变通(使用不同标志、增加额外步骤),请更新此 SKILL.md,避免下次调用时还需要同样的变通处理。

只有在问题真实且可复现时才进行更新,不要基于猜测更新。

评论

支持 Markdown