news 2026/10/3 7:15:10

tldr 中 zcat 别名页全解:gzip --stdout --decompress 的用法与多语言文档维护实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
tldr 中 zcat 别名页全解:gzip --stdout --decompress 的用法与多语言文档维护实践
  • 文档
  • 教程
  • 知识库

【免费下载链接】tldr

Collaborative cheatsheets for console commands 📚.

项目地址:https://gitcode.com/GitHub_Trending/tl/tldr
点击查看免费下载

本文围绕 pages.ar/common/zcat.md 展开:它是一份阿拉伯语版的 tldr 别名页,把zcat定义为gzip --stdout --decompress的别名。读完本文,你将理解 tldr 项目中"别名页"的文档结构与生成机制、zcat及其原命令gzip的全部常用参数,以及bzcat、xzcat、lzcat等同族命令的定位,并能在日常终端工作中直接使用这些速查方法。

1. 关联文档速览:pages.ar/common/zcat.md 讲了什么

本篇文章的主体是 tldr 仓库(Collaborative cheatsheets for console commands)中阿拉伯语(ar)的一份命令速查页。文件完整内容如下:

# zcat > هذا الأمر هو اسم مستعار لـ `gzip --stdout --decompress`. - إعرض التوثيقات للأمر الأصلي: `tldr gzip`

仅三行信息,含义对应:

原文(阿拉伯语)中文含义
# zcat页面标题:命令名zcat
> هذا الأمر هو اسم مستعار لـgzip --stdout --decompress.本命令是gzip --stdout --decompress的别名
- إعرض التوثيقات للأمر الأصلي:查看原命令的文档
`tldr gzip`执行方式:运行tldr gzip

这份文档并不重复罗列zcat自身的全部用法——因为 tldr 采用"别名页"策略:当一个命令只是另一个命令的别名时,不复制原命令的完整内容,而是只声明别名关系并引导用户查看原命令页。这正是 tldr 保持速查页简洁的核心设计之一。

2. 别名页在 tldr 项目中的定位与标准模板

zcat页属于 tldr 仓库中的"别名页(alias page)"类型,其英文原版位于 pages.en/common/zcat.md(pages/common/zcat.md与之内容一致):

# zcat > This command is an alias of `gzip --stdout --decompress`. - View documentation for the original command: `tldr gzip`

阿拉伯语版与英文版严格一一对应,只是翻译了描述行和提示行。所有语言的别名页都必须遵循统一的模板,模板定义在 contributing-guides/translation-templates/alias-pages.md 中。该文件为 40 多种语言各提供了一份# example示例模板,其中阿拉伯语(ar)模板正是:

# example > هذا الأمر هو اسم مستعار لـ `example`. - إعرض التوثيقات للأمر الأصلي: `tldr example`

模板中占位符example会被实际命令名替换。可以推断,pages.ar/common/zcat.md 正是由该模板生成的:标题占位符替换为zcat,描述中的原命令占位符替换为gzip --stdout --decompress,而tldr行则指向原命令gzip。

为什么采用别名页而不是复制内容?

从模板与脚本逻辑看,别名页解决了三个问题:

  1. 避免内容重复:zcat与gzip行为等价,若各自维护一套示例容易失同步;
  2. 保证唯一事实源:所有用法细节只维护在原命令页 pages/common/gzip.md 中;
  3. 多语言低成本同步:脚本只需把英文别名页的"标题 / 原命令 / 文档命令"三个字段套入对应语言的模板,即可生成全部翻译。

3. 解析原命令:gzip --stdout --decompress 到底做了什么

zcat被定义为gzip --stdout --decompress的别名,因此理解zcat的关键在于理解这两个 gzip 选项的组合:

  • --decompress(-d):解压模式,将.gz压缩文件还原为原始内容;
  • --stdout(-c):把结果写到标准输出,而不是默认行为那样用解压结果替换原.gz文件。

两者组合的效果是:读取一个.gz文件,把解压后的原始内容输出到标准输出,同时保留压缩文件本身不变。这就是zcat的全部语义——它非常适合在不解压出实体文件的情况下直接"查看"或"管道式消费"压缩内容。

tldr 的 gzip 速查页 给出了原命令的完整参数清单,这些参数同样适用于理解zcat的行为:

参数作用示例
-d/--decompress解压(zcat已隐含该选项)gzip -d file.gz
-c/--stdout输出到标准输出(zcat已隐含该选项)gzip -cd file.gz > out
-k/--keep压缩或解压时保留原文件gzip -k file
-v/--verbose显示每个文件的压缩率gzip -v file.gz
-l/--list列出压缩文件内容信息gzip -l file.txt.gz
-1…-9压缩级别:1 最快、9 压缩率最高、6 为默认gzip -6 -c file > file.gz

其中与zcat最相关的等价写法是:

# zcat 与下面这条 gzip 命令完全等价 gzip --stdout --decompress path/to/file.gz # 等价写法(短选项组合) gzip -cd path/to/file.gz

gzip 页面还展示了--stdout配合重定向的典型用法,例如将压缩结果写入指定文件而不改动源文件,或把解压结果重定向到新文件:

gzip -c path/to/file > path/to/compressed_file.gz gzip -cd path/to/file.gz > path/to/uncompressed_file

4. zcat 的实战使用场景

由于zcat=gzip --stdout --decompress,可以直接把它当作"只读查看器"使用,最常见的三个场景是:

4.1 不解压文件直接浏览内容

zcat path/to/file.txt.gz | less zcat path/to/file.txt.gz | head -n 20

压缩文件原样保留,符合--stdout不解压到磁盘的语义。

4.2 管道送入其他命令处理

zcat path/to/file.txt.gz | grep "keyword"

日志、数据文件压缩后仍可被grep、awk、sort等命令直接消费,无需中间解压文件。

4.3 还原为普通文件

zcat path/to/file.txt.gz > path/to/file.txt

注意:zcat本身不生成文件,必须通过重定向>把标准输出落盘;这与gunzip直接替换文件的行为不同。仓库中的阿拉伯语 gunzip 页 与 unxz 页 分别覆盖了对应解压命令的常规用法,可作为对照。

5. zcat 的同类兄弟命令

tldr 仓库在common平台目录下记录了多个*cat家族的别名命令,它们的模式完全一致:解压并输出到标准输出。对比可见(以英文页 pages.en 及 pages/common 为准):

命令别名指向对应文档
zcatgzip --stdout --decompresszcat.md
bzcatbzip2 --decompress --stdoutbzcat.md
xzcatxz --decompress --stdoutxzcat.md
lzcatxz --format lzma --decompress --stdoutlzcat.md

例如 bzcat 页 内容为:

# bzcat > This command is an alias of `bzip2 --decompress --stdout`. - View documentation for the original command: `tldr bzip2`

而 lzcat 页 则指向xz --format lzma --decompress --stdout(多了--format lzma,表示按 LZMA 格式解压)。选择哪个cat命令,取决于压缩文件的格式:.gz用zcat,.bz2用bzcat,.xz/.lzma分别用xzcat/lzcat。这些别名页在阿拉伯语目录中同样存在对应翻译,如 pages.ar/common/bzcat.md 和 pages.ar/common/xzcat.md。

6. 别名页的自动化维护:scripts/set-alias-page.py

别名页并非手工逐语言维护,而是由仓库脚本 scripts/set-alias-page.py 驱动的。脚本的核心流程如下:

  • get_templates(root, "alias-pages.md"):读取 contributing-guides/translation-templates/alias-pages.md 中全部语言的模板;
  • generate_alias_page_content():用真实的标题、原命令、文档命令替换模板中的example占位符;
  • get_alias_command_in_page():反向解析已有页面,识别其是否为别名页,并提取"原命令"与"tldr ...文档命令"两个字段;
  • get_english_alias_pages():扫描英文pages目录下所有平台(common、linux、osx等)找出全部别名页;
  • sync_alias_page_to_locale():把英文别名页同步到指定语言目录。

脚本提供的常用操作(参见 scripts/set-alias-page.py 的 docstring):

# 交互式创建/更新某条别名页(如 osx/gsum) python3 scripts/set-alias-page.py -p osx/gsum # 把英文别名页同步到所有语言翻译 python3 scripts/set-alias-page.py -S # 只同步某一种语言(如阿拉伯语 ar / 巴西葡语 pt_BR) python3 scripts/set-alias-page.py -S -l ar # 同步并为修改结果执行 git stage python3 scripts/set-alias-page.py -Ss # 预览将产生的改动而不落盘 python3 scripts/set-alias-page.py -Sn

正因如此,pages.ar/common/zcat.md 的每个字段都能在脚本与模板层面得到印证:zcat是标题、gzip --stdout --decompress是原命令、gzip是文档命令,三者经generate_alias_page_content()套入ar模板后即生成该文件。

7. 终端中的使用方式与查阅路径

在安装了 tldr 客户端的终端环境中,即可直接使用速查能力:

# 查看 zcat 的别名说明(即本页内容) tldr zcat # 按别名页引导,查看原命令 gzip 的完整用法 tldr gzip

tldr 的速查页在仓库中以platform/命令名.md组织(如 pages/common、pages/linux、pages/osx),多语言版本分别位于pages.ar/、pages.zh/、pages.zh_TW/等目录。阿拉伯语zcat页所在的 pages.ar/common 目录与英文 pages.en/common 目录保持了完全一致的文件结构,这也是别名页能被脚本跨语言批量同步的前提。

小结

pages.ar/common/zcat.md 虽然只有三行,却是 tldr 项目"别名页"设计的一个典型样本:它用一句话定义了zcat=gzip --stdout --decompress,把全部参数细节交给原命令页,并通过 translation-templates/alias-pages.md 模板与 set-alias-page.py 脚本在 40 多种语言中保持同步。掌握这一模式,你既能快速上手zcat的"只读解压"能力,也能理解 tldr 仓库维护大型多语言速查集的工程化思路。

  • 文档
  • 教程
  • 知识库

【免费下载链接】tldr

Collaborative cheatsheets for console commands 📚.

项目地址:https://gitcode.com/GitHub_Trending/tl/tldr
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/3 7:14:04

微信小程序+SSM驾考系统开发全攻略:从毕设开题到答辩排坑

最近被问得最多的一个毕设题目,就是“基于微信小程序的优选驾考SSM”。微信小程序做前端,SSM(Spring SpringMVC MyBatis)做后端,搭一套驾考学习、刷题、预约考试的系统。这个组合在近几年的毕业设计里出现频率非常高…

作者头像 李华
网站建设 2026/10/3 7:13:52

手机PDF转换成Word免费版!安卓苹果通用,简单好用

日常办公、学习中,我们经常会遇到PDF文件无法编辑的问题。PDF格式虽然排版稳定、不易错乱,但无法直接修改文字、调整表格,想要二次编辑内容,唯一便捷的方式就是转换成可随意修改的Word文档。很多人习惯用电脑转换,其实…

作者头像 李华
网站建设 2026/10/3 7:13:21

PDF拆分合并超全教程!本地+在线双方案,新手零门槛搞定

日常办公、学习、整理资料时,大家经常会遇到PDF处理难题:多份PDF需要整合为一份、长篇PDF需要拆分出指定页面、多余空白页需要删除等等。很多人要么找不到合适工具,要么下载软件捆绑广告、收费有水印,在线工具又担心文件隐私泄露。…

作者头像 李华
网站建设 2026/10/3 7:12:40

实验室预约系统|基于java+ vue实验室预约系统(源码+数据库+文档)

实验室预约系统 目录 基于springboot vue实验室预约系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue实验室预约系统 一、前言 博主介绍&#x…

作者头像 李华
网站建设 2026/10/3 7:12:36

餐饮采购系统数据库建设:原材料清单结构化与导入实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华