功能概述
telegram-ascii-table 是一个将表格数据格式化为 ASCII/Unicode 框线表格的实用工具,专为 Telegram 等即时通讯平台的等宽字体代码块显示而设计。其核心设计哲学是安全性优先:强制使用 stdin 输入(heredoc 或管道),完全规避 shell 参数注入风险。
核心用法
输入格式为管道符 | 分隔的纯文本,通过 heredoc 或管道传递:
# 推荐:heredoc 防止 shell 解析 ascii-table <<'EOF' Name|Value Server|web-01 EOF # 或管道输入 cat data.txt | ascii-table
双模式渲染
- Desktop 模式(默认):Unicode 框线字符(┌─┬─┐),58 字符宽度,桌面端显示美观
- Mobile 模式(--mobile):ASCII 字符(+-|),48 字符宽度,移动端兼容性强
显著优点
1. 安全设计:stdin-only 输入彻底消除命令注入、变量扩展、反引号执行等 shell 解析风险
2. 智能排版:自动计算列宽、文本自动换行、单元格边距填充
3. 即开即用:无需依赖库,单 Python 脚本即可运行
4. 平台适配:针对 Telegram 代码块特性优化,桌面/移动端双模式切换
局限性与风险
| 限制项 | 说明 |
|--------|------|
| 分隔符冲突 | 单元格内容不能包含 `\|` 管道符 |
| 宽字符问题 | Emoji、CJK 等宽字符可能导致对齐偏移 |
| 换行策略 | 长单词可能在任意位置断行,非智能断词 |
| 对齐方式 | 仅支持左对齐,无数字右对齐 |
适用人群
- 运维人员:快速将命令输出整理为可读表格发送至团队群
- 开发者:在 Telegram 中分享结构化数据、配置状态、监控结果
- 安全意识强的用户:需要处理不可信数据时,优先选择此 stdin-only 方案
常规风险提示
- 输入数据中的
|会被识别为列分隔符,需预处理替换 - 超宽表格在移动端可能产生水平滚动,建议配合
--mobile使用 - 虽规避了 shell 注入,但脚本本身仍需从可信来源获取