解读 Uniqlo T 恤上混淆过的 bash 脚本

OCR 与转录

  • 有人把这件衬衫称作 OCR 的“噩梦”案例;也有人说,对现代工具来说这很简单(Safari/Preview 的 Live Text、Android 的图像转文字、Google Lens、Gemini、Claude、ChatGPT、PaddleOCR、工业 OCR 系统)。
  • 一些人说手动输入会更快也更可靠,并提起从杂志上照着打程序的怀旧经历;另一些人指出人类也很容易出错,更喜欢 OCR 加人工校正。
  • 少数人描述了混合工具工作流:运行多个 OCR 引擎,比较输出差异,然后手动修正不一致之处;有人提到一个自定义工具,会把可能的 OCR 错误聚类起来供快速审查。
  • 这件衬衫在 base64 载荷里没有做错误校正,因此真正的挑战是 OCR/转录本身。

这个脚本是 LLM 生成的吗?

  • 一派认为“是”:异常密集、有时甚至重复的注释、像复制粘贴一样的模式、别扭的 bc 用法,以及奇怪的颜色/渐变逻辑,都很像 LLM 风格。
  • 另一些人认为“不是”:人类也会过度注释,注释也许是用来填充 base64 长度并放入“PEACE FOR ALL”字符的,而这些怪癖很符合一个 Python 开发者写 bash 的风格。
  • 讨论中提到设计师的视频和一个 Python 原型;人们对这些材料在多大程度上支持或反驳 LLM 参与意见不一。总体上,尚无定论。

脚本行为、可移植性与风格

  • 该脚本依赖 bc;一些系统(例如 Debian 安装、Alpine 等)默认没有它,导致运行时报错。有人分享了 Python 和 awk 的替代实现,通常更快也更简单。
  • 区域设置问题(小数逗号、LC_ALL=C vs UTF-8)会破坏进度/小数处理;脚本还使用了环境变量 COLUMNS/LINES
  • 有人建议在循环里加 sleep,这样动画更容易看清。另一些人指出了一些 shell 风格问题(没有 set -euo pipefail、base64 的选择、SIGINT 处理)。

T 恤设计、文化与营销

  • 讨论中提到 Uniqlo–Akamai 的合作以及之前的代码 T 恤(包括 Go 语言的)。很多人喜欢这件衣服真的包含了可运行代码,而不是假装“科技感”的文本。
  • 人们把它和 DeCSS T 恤以及其他“把代码穿在身上”的传统相比较;有些人认为这是一种聪明的广告,而人们还愿意掏钱穿它。

字体与排版

  • 关于印刷字体是否模仿 Consolas 或 Roboto Mono 存在争论;共识是这件衫使用了类似等宽字体的字形,但通过字距调整/可变宽度方式排版,很可能借助了设计工具。
  • 这引发了对准等宽字体的讨论(Monaspace、iA Writer fonts、Trispace)以及“texture healing”和连字等技巧。

自动化 vs 手工劳动

  • 讨论中提到了 XKCD 关于对小任务过度自动化的漫画。有些人认为,比起复杂的 OCR/LLM 流程,手动打字其实会更快;另一些人则看重自动化能减少错误,也更有趣。

安全性与“混淆”叙事

  • 不少人指出这只是 base64 编码,不算真正的混淆,并质疑把它称作“复活节彩蛋”,因为它是公开印在衣服上的。
  • 也有人半开玩笑地担心人们会运行未知的 base64+eval,把它当成类似二维码的攻击面,甚至设想文本里藏着一个 Tesseract 零日漏洞。