☰
tldr 项目中的 rehash 别名页:理解 `hash -r` 命令与别名页文档机制
2026/10/5 4:07:59 网站建设 项目流程
  • 文档
  • 教程
  • 知识库

【免费下载链接】tldr

Collaborative cheatsheets for console commands 📚.

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

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后的产物。别名页因此具备两个显著特点:

  1. 结构与措辞高度统一,跨语言可机械翻译、可脚本同步;
  2. 内容极简,只承担"指路"职责,命令细节全部留给原命令页。

这套约定同样被写入贡献指南的 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 📚.

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

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询