返回资讯中心
外部精选
软件工程
#开发者实时流

用户分享受Unix启发的极简家目录布局方案

来源标题:Structured Home Directory Layout

一位用户公开了自己受传统 Unix 文件系统层级启发设计的主目录布局,将家目录按用途划分为 bin、dta、etc、imp、lib、not、rnd、src、tmp、vcs 等顶层目录。每个目录以唯一首字母开头,只需输入 cd 加一个字符再按 Tab 即可补全,无需担心歧义。可执行文件按类型和架构存放在 bin 下的 amd64 等子目录中。

Hacker News 最新veqq2026/11/13 · 今天10 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

^ ^ ^ ^ =(o.o)= ~byakuren =(o.o)= m m m m 家目录布局 为 Tab 补全设计的唯一前缀 bin — 可执行文件 PATH 顺序 dta — 程序数据 etc — 系统目录 gdf — Git 差异 imp — 重要文件 lib — 库文件 not — 笔记 rnd — 杂项 src — 源代码 tmp — 临时文件 vcs — 版本控制仓库 设计 理念 家目录布局 我的家目录遵循一种结构化的极简布局,灵感来自传统的 Unix 文件系统层级。每个顶层目录都有明确的用途,让不同机器上的内容保持井然有序、可预期。 bin dta etc gdf imp lib not rnd src tmp vcs 为 Tab 补全设计的唯一前缀 每个顶层目录都以一个唯一的字母开头。这意味着导航简单到只需输入 cd 加一个字符再按 Tab——没有歧义,也不用等待补全菜单。这一规则同样适用于文件——直接放在 ~ 下的任何内容,其命名都不会与这些前缀冲突。结果是近乎瞬时的导航,永远不需要输入超过两三个字符。 我所有的可执行文件都放在这里,按类型和架构组织。 bin/ ├── amd64/ # 为 x86-64 编译的二进制文件 ├── ln/ # 指向其他地方二进制文件的符号链接 ├── ni/ # 非交互式脚本 ├── paths # 额外的 $PATH 条目 └── sh/ # Shell 脚本 amd64 — 特定架构的编译二进制文件。如果我的家目录在多台不同架构的机器间共享,每种架构都有自己的子目录(例如 arm64)。 ln — 指向安装在别处的可执行文件的符号链接,通常指向 ~/vcs/。这样既避免了系统目录变得杂乱,又让工具保持可访问。 ni — 用作较大脚本构建块的非交互式命令。这些命令从不手动输入——它们是管道,不是门面。 paths — 一个纯文本文件,列出要追加到 $PATH 的额外目录,比如 Go 的 bin 目录或 pip install 的位置。 sh — 这里的所有脚本都是带有 shebang(#!)的纯文本。我随时可以在编辑器中打开它们,确切知道它们做什么。 PATH 顺序 export PATH="$HOME/bin/sh:$HOME/bin/ln:$HOME/bin/amd64:$PATH" 这里的顺序是刻意的: 这种优先级意味着我可以逐步覆盖命令:一个脚本可以包装一个符号链接的二进制文件,而后者又可以遮蔽一个编译的二进制文件。 集中存放那些将数据保存在单一目录中的程序。例子包括: 这样既让应用数据远离家目录根层,又保持易于备份或迁移。 etc/ ├── audio/ ├── desktop/ ├── documents/ ├── downloads/ ├── music/ ├── pictures/ ├── public/ ├── sounds/ ├── templates/ └── video/ 常见的系统目录和挂载点放在这里: 用于存储 git 差异(补丁)的目录。适用于: 每个 .gdf 文件都是自包含的差异,可以用 git apply 应用。 值得额外保护的敏感文档和文件。此目录在标准家目录加密之外还使用了额外的加密。 配置文件与资源,通过符号链接分发到系统中各自需要的位置: 将规范版本保存在这里,我就有了单一事实来源,可以进行版本控制,并轻松部署到新系统。 快速笔记和草稿文件,配合 shell 脚本使用。一个简单、随时可访问的位置,用于随手记录,无需繁文缛节。 收纳那些不适合放在别处但值得保留的文件的万能目录: 这个名字刻意取得很短——当某些东西需要随手可用但还没决定永久归宿时,就会落在这里。 src/ ├── apl/ ├── bash/ ├── bqn/ ├── c/ ├── cpp/ ├── futhark/ ├── j/ ├── lean/ ├── mercury/ ├── prolog/ ├── python/ ├── sh/ ├── uiua/ ├── unison/ ├── uxn/ └── ... 我写的所有代码都放在这里,先按语言组织,再按项目组织。这种结构使得以下操作变得容易:

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →