- 文档
- 教程
- 知识库
【免费下载链接】tldr
Collaborative cheatsheets for console commands 📚.
本文围绕 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。
为什么采用别名页而不是复制内容?
从模板与脚本逻辑看,别名页解决了三个问题:
- 避免内容重复:
zcat与gzip行为等价,若各自维护一套示例容易失同步; - 保证唯一事实源:所有用法细节只维护在原命令页 pages/common/gzip.md 中;
- 多语言低成本同步:脚本只需把英文别名页的"标题 / 原命令 / 文档命令"三个字段套入对应语言的模板,即可生成全部翻译。
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.gzgzip 页面还展示了--stdout配合重定向的典型用法,例如将压缩结果写入指定文件而不改动源文件,或把解压结果重定向到新文件:
gzip -c path/to/file > path/to/compressed_file.gz gzip -cd path/to/file.gz > path/to/uncompressed_file4. 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 为准):
| 命令 | 别名指向 | 对应文档 |
|---|---|---|
zcat | gzip --stdout --decompress | zcat.md |
bzcat | bzip2 --decompress --stdout | bzcat.md |
xzcat | xz --decompress --stdout | xzcat.md |
lzcat | xz --format lzma --decompress --stdout | lzcat.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 gziptldr 的速查页在仓库中以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 📚.
相关推荐
Teleport 统一资源视图(Unified Resource View):RFD 137 架构设计与源码实现解析
Teleport 统一资源视图(Unified Resource View):RFD 137 架构设计与源码实现解析 导读 Unified Resource V
文档教程知识库tldr 别名页机制深度解析:以 gunzip 与 `gzip --decompress` 为例
tldr 别名页机制深度解析:以 gunzip 与 gzip decompress 为例 本篇以 tldr 仓库中的阿拉伯语别名页 pages.ar/commo
文档教程知识库tldr 仓库中的 zegrep 别名页:从 `zgrep --extended-regexp` 到多语言别名页维护机制
tldr 仓库中的 zegrep 别名页:从 zgrep extended regexp 到多语言别名页维护机制 本文以 pages.ar/common/zeg
文档教程知识库
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考