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

xdg-ninja:检查 $HOME 目录中多余文件的 shell 脚本

来源标题:Xdg-ninja: Shell script to check $HOME for unwanted files and directories

xdg-ninja 是一个 shell 脚本,用于检查用户 $HOME 目录中不符合 XDG 规范的文件和目录。当发现已知文件时,它会提示能否迁移到合适位置以及具体操作方法。其配置来源于 Arch Wiki 的 XDG_BASE_DIR 页面、antidot 项目以及用户众包。

Hacker News 最新ankitg122026/11/14 · 今天12 分钟阅读

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

因为你不会随便让任何人进入你的 $HOME

一个用于检查你的 $HOME 中是否存在多余文件和目录的 shell 脚本。 当 xdg-ninja 遇到它认识的文件或目录时,它会告诉你是否可以将该文件或目录移动到合适的位置,以及如何操作。 这些配置来自 arch wiki 上的 XDG_BASE_DIR 页面、antidot(感谢 Scr0nch 编写了转换工具),以及其他用户众包贡献的内容。

手动安装

克隆仓库,然后运行 ./xdg-ninja.sh 脚本。 git clone https://github.com/b3nj5m1n/xdg-ninja cd xdg-ninja ./xdg-ninja.sh 这会运行默认配置中的每一项测试。

开启 flakes,然后运行以下命令: nix run github:b3nj5m1n/xdg-ninja

Homebrew

注意 由于 xdg-ninja 的开发方式,不会发布正式版本,因此 Homebrew 提供的是过时的版本,所以你必须从 git HEAD 安装和升级 xdg-ninja。参考:#204 运行通用的 brew upgrade 时,Homebrew 不会升级 xdg-ninja,你必须专门从 git HEAD 升级 xdg-ninja,见下文 brew upgrade xdg-ninja --fetch-HEAD

其他包管理器

xdg-ninja 在许多其他包管理器中也可用。 完整列表可在 repology 页面上找到。 按照你的包管理器的说明安装 xdg-ninja。

依赖

你最喜欢的符合 POSIX 标准的 shell(bash、zsh、dash 等) 用于解析 json 文件的 jq find 可选 用于在终端中渲染 Markdown 的 glow(bat、pygmentize 或 highlight 可作为后备,但 glow 的输出更清晰,因此推荐使用 glow)

配置

配置在 ./programs/ 目录中完成,该目录应与 xdg-ninja.sh 脚本位于同一工作目录下。可以通过 $XN_PROGRAMS_DIR 环境变量覆盖此设置。 你定义一个程序,然后列出该程序强行放入你的 $HOME 目录的文件和目录。 对于每个文件/目录,你需要指明它是否可以被(重新)移动。 如果可以,你还需要用 Markdown 说明如何完成此操作。 此目录中的文件可以有任何名称,但建议使用程序的名称。 为避免不必要的警告,你可以通过运行 xdg-ninja --skip-unsupported 来跳过不支持的文件。 此外,你可以在 $XDG_CONFIG_HOME/xdg-ninja/ignore 创建一个忽略文件,或使用 $XN_IGNOREFILE 环境变量指向你的忽略文件。 输入你希望继续留在 $HOME 中造成杂乱的文件或目录的基名。以下是一个忽略文件的示例: .zshenv .zshrc .profile .xinitrc

自动生成配置

对于 x86_64 Linux 系统,你可以从 releases 页面下载 xdgnj 二进制文件。 或者,你可以使用 cabal 或 stack 从源码构建,使用 nix flake,或使用提供的 docker 镜像。 需要说明的是,这只是一个帮助你自动生成配置文件的工具,你仍然只需要你的 shell 来运行测试 xdgnj add # 添加一个新配置 xdgnj prev programs/FILE.json # 预览某个程序的配置 xdgnj edit programs/FILE.json # 编辑某个程序的配置 xdgnj run # 基本等同于运行 shell 脚本

预构建二进制文件

重要 这些二进制文件仅在 x86_64 Linux 系统上运行。 curl -fsSL -o xdgnj https://github.com/b3nj5m1n/xdg-ninja/releases/latest/download/xdgnj chmod +x xdgnj

从源码构建

你可以使用 cabal build 或 stack build nix run github:b3nj5m1n/xdg-ninja#xdgnj-bin ...

Docker

使用 ./haskell/build/ 中提供的 dockerfile。 默认情况下,它会把 .gitconfig 文件放入 $HOME。 幸运的是,git 支持 XDG 规范,因此我们可以简单地将该文件移动到 $XDG_CONFIG_HOME/git/config。 我们可以把最后这句话作为我们的说明。在这种情况下,没有换行符,因此将该字符串转义以便在 json 中使用很简单,不过,以下是你通常应采用的方法: echo "Luckily, the XDG spec is supported by git, so we can simply move the file to $XDG_CONFIG_HOME/git/config." | jq -aRs . 让我们看看对于一个稍微复杂一些的内容,这个命令的输出是什么样的。 cat example.md Currently not fixable.

(But you can probably just delete the dir) 以下是将此文件通过管道传给 jq 后产生的输出: cat example.md | jq -aRs . "Currently not fixable.\n\n_(But you can probably just delete the dir)_\n" 现在,我们可以组装最终的 json 文件了:

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

打开原文
去社区讨论 →