- 文档
- 教程
- 知识库
【免费下载链接】tldr
Collaborative cheatsheets for console commands 📚.
rehash是 Bash 内建命令hash -r的别名,本仓库(GitHub_Trending/tl/tldr,即 tldr 协作式命令行速查手册项目)通过"别名页(alias page)"这一专门的页面格式来收录它,引导用户直接查阅原命令hash的完整文档。本文以仓库中的保加利亚语别名页 pages/bg/common/rehash.md 为起点,完整解析hash命令的各类用法、tldr 别名页的模板规范与多语言同步机制,并延伸介绍仓库内用于生成和维护别名页的 Python 工具链,帮助你既掌握该命令的实际用法,也理解这类文档在 tldr 仓库中的组织原理。
一、rehash 是什么:hash -r的别名
在 tldr 仓库中,pages/bg/common/rehash.md 的完整内容如下:
# rehash > Тази команда е псевдоним на `hash -r`. - Виж документацията за оригиналната команда: `tldr hash`逐行解读:
- 第一行
# rehash是页面标题,即命令名; - 第二行
> ...是描述行,保加利亚语意为"该命令是hash -r的别名"; - 最后一行
`tldr hash`是唯一的示例,告诉用户查看原命令的文档。
与其对应的英文原页 pages/common/rehash.md 内容为:
# rehash > This command is an alias of `hash -r`. - View documentation for the original command: `tldr hash`可以看到,别名页本身不重复罗列命令的全部参数,而是将rehash指向其"本体"hash -r,由tldr hash把用户带到原命令的完整速查页。这也是 tldr 项目设计别名页的核心思路:同一命令被多种名称调用时,用最简页面承接别名,避免文档重复维护。
二、原命令hash的完整速查解析
要真正理解rehash,需要先读懂hash。仓库中的 pages/common/hash.md 提供了hash命令的完整速查内容:
# hash > View cached executable locations. > More information: <https://www.gnu.org/software/bash/manual/bash.html#index-hash>. - View cached command locations for the current shell: `hash` - Clear the hash table: `hash -r` - Delete a specific command from the hash table: `hash -d {{command}}` - Print the full path of a command: `hash -t {{command}}` - Display help: `hash --help`这条速查页告诉我们hash是 Bash 内建命令,用途是"查看缓存的命令可执行文件位置"。Bash 在启动时会把命令查找结果缓存进一张哈希表(hash table),避免每次执行命令都重新遍历PATH,从而加快查找速度。hash命令即用于查看和操作这张缓存表。各参数含义如下:
| 用法 | 作用 |
|---|---|
hash | 列出当前 shell 中已缓存命令的路径及命中次数 |
hash -r | 清空整张哈希表(强制 Bash 重新扫描PATH缓存) |
hash -d {{command}} | 从哈希表中删除指定命令的缓存条目 |
hash -t {{command}} | 打印指定命令的完整绝对路径 |
hash --help | 显示帮助信息 |
rehash实际执行的就是hash -r,即清空命令哈希缓存。这在动态安装了新软件、或PATH下出现新的可执行文件而当前 shell 无法找到时尤为实用:执行rehash后,后续命令查找将基于刷新后的缓存进行。
三、别名页模板与保加利亚语版本
别名页并非随意书写,而是严格遵循统一模板,模板定义在 contributing-guides/translation-templates/alias-pages.md。该文件为每一种已翻译语言保存了一份标准模板,英文模板为:
# example > This command is an alias of `example`. - View documentation for the original command: `tldr example`其中example是占位符,实际创建页面时会依次替换为别名命令名、原命令名和文档查询命令。保加利亚语(bg)模板为:
# example > Тази команда е псевдоним на `example`. - Виж документацията за оригиналната команда: `tldr example`对照 pages/bg/common/rehash.md 可见,该页面正是将模板中的三个example分别替换为rehash、hash -r、hash后的产物。别名页因此具备两个显著特点:
- 结构与措辞高度统一,跨语言可机械翻译、可脚本同步;
- 内容极简,只承担"指路"职责,命令细节全部留给原命令页。
这套约定同样被写入贡献指南的 Aliases 章节:当一条命令可以有不同的名称被调用(例如vim可以通过vi调用)时,就可以创建别名页把用户引导到原命令名。指南同时给出了vi指向vim的示例,并明确指向了多语言模板文件。
四、别名页背后的工具链:set-alias-page.py 的生成与同步
仓库为别名页的创建与维护提供了专门的脚本 scripts/set-alias-page.py。该脚本以交互方式工作,核心能力如下:
- 交互式创建/更新单页:
-p指定页面路径,例如python3 scripts/set-alias-page.py -p osx/gsum,脚本会引导输入页面标题、原命令与文档查询命令,并展示将要生成的页面内容供确认; - 全量同步翻译:
-S(--sync)读取英文别名页并同步到各语言目录;配合-l可只同步指定语言,如python3 scripts/set-alias-page.py -S -l pt_BR; - 预演与暂存:
-n以 dry-run 方式展示将要产生的改动而不实际写入;-s在修改完成后将变更git暂存(如-Ss); - 宽松匹配:
-i忽略与标准模板的精确匹配,用于发现非标准的别名页。
脚本的关键逻辑在set_alias_page()与get_alias_command_in_page()两个函数中:前者从 translation-templates/alias-pages.md 读取当前语言模板,通过字符串替换把模板中的example依次替换为真实值后写盘;后者则反向解析一个页面是否属于标准别名页——它要求页面恰好包含"描述行 + tldr 命令行"两类关键行,并据此提取原命令与文档查询命令。从源码结构看,这套解析与生成逻辑互为镜像,保证了仓库内别名页"生成规范、校验严格"。
模板的读取由 scripts/_common.py 中的get_templates()完成:它解析### 语言标题下的```markdown代码块,将各语言的模板文本收集为{语言: 模板}字典,供set-alias-page.py使用。这意味着新增一种语言的别名页翻译,只需在模板文件中补充对应模板即可被工具链自动识别。
五、实践:如何查阅 rehash 与 hash 的文档
在安装了 tldr 客户端的终端环境中,查阅方式非常直接:
# 查看 rehash 别名页(会提示其为 hash -r 的别名) tldr rehash # 查看原命令 hash 的完整速查 tldr hash结合上文的参数表,实际场景中可以这样运用:
- 安装了新工具后发现当前 shell 找不到它,执行
rehash(即hash -r)清空缓存后再试; - 排查命令解析问题时,用
hash -t {{command}}查看某命令实际解析到的路径; - 仅需清理某一个缓存项时,使用
hash -d {{command}}而不必整体清空。
六、结语
从 pages/bg/common/rehash.md 这个仅有 7 行的保加利亚语别名页出发,可以完整串起一条知识链:rehash是 Bash 内建命令hash -r的别名,用于清空命令哈希缓存;tldr 项目用统一的别名页模板承接这类命令,把细节交给 pages/common/hash.md 这样的原命令页;而模板定义在 alias-pages.md,创建与多语言同步则由 set-alias-page.py 自动化完成。理解这套"极简别名页 + 统一模板 + 脚本同步"的机制,不仅能让你快速看懂仓库中大量形如rehash的别名页面,也为向 tldr 贡献新别名页提供了可复用的操作范式。
- 文档
- 教程
- 知识库
【免费下载链接】tldr
Collaborative cheatsheets for console commands 📚.
相关推荐
tldr 仓库中的 fdfind 别名页:命令别名文档机制与 fd 命令速查
tldr 仓库中的 fdfind 别名页:命令别名文档机制与 fd 命令速查 导读 本文围绕 fdfind.md https://link.gitcode.co
文档教程知识库tldr 别名页全解析:以 `gh at`(`gh attestation` 的别名)为例理解 tldr 命令别名文档的机制与实战
tldr 别名页全解析:以 gh at ( gh attestation 的别名)为例理解 tldr 命令别名文档的机制与实战 本篇指南聚焦 tldr 仓库中一
文档教程知识库tldr 仓库中的 gdm-binary 别名页:别名命令文档机制与 GDM 使用指南
tldr 仓库中的 gdm binary 别名页:别名命令文档机制与 GDM 使用指南 本篇文章以 pages.bg/common/gdm binary.md
文档教程知识库
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考