一个跳转到内容开始的链接

介绍

b3nj5m1n / **xdg-ninja ** Public

一个 shell 脚本,用于检查你的 $HOME 目录中是否存在不需要的文件和目录。

许可协议

MIT license

2.6k stars 152 forks Branches Tags Activity

Star

Notifications You must be signed in to change notification settings

Additional navigation options

b3nj5m1n/xdg-ninja

main

BranchesTags

Go to file

Code

目录和文件

Name| Name| Last commit message| Last commit date ---|---|---|---

Latest commit

History

529 Commits .github/workflows| .github/workflows .vscode| .vscode haskell| haskell json-schema| json-schema man| man programs| programs .gitignore| .gitignore LICENSE| LICENSE Makefile| Makefile README.md| README.md flake.lock| flake.lock flake.nix| flake.nix xdg-ninja.sh| xdg-ninja.sh View all files

Repository files navigation

xdg-ninja

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

一个 shell 脚本,用于检查你的 $HOME 目录中是否存在不需要的文件和目录。

xdg-ninja 命令输出

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

这将以默认配置运行每个测试。

Nix

启用 flakes,然后运行以下命令:

nix run github:b3nj5m1n/xdg-ninja

Homebrew

注意:由于 xdg-ninja 的开发方式,不会发布 release 版本,因此 Homebrew 提供的是过时的版本。因此,你必须从 git HEAD 安装和升级 xdg-ninja。参考:#204

当运行通用的 brew upgrade 时,Homebrew 不会升级 xdg-ninja,你必须专门从 git HEAD 升级 xdg-ninja见下文

安装:

brew install xdg-ninja --HEAD

升级:

brew upgrade xdg-ninja --fetch-HEAD

其他包管理器

xdg-ninja 在许多其他包管理器中都可用。

完整的列表可在 repology 页面上找到。

按照你的包管理器的说明安装 xdg-ninja

贡献

依赖

可选

配置

配置在 ./programs/ 目录中完成,该目录应与 xdg-ninja.sh 脚本位于同一工作目录中。可以使用 XN_PROGRAMS_DIR 环境变量覆盖此设置。

你定义一个程序,然后定义该程序无情地放入你的 $HOME 目录中的文件和目录列表。

对于每个文件/目录,你指定是否可以(重新)移动它。

如果是这种情况,你还指定有关如何在 Markdown 中完成此操作的说明。

此目录中的文件可以具有任何名称,但建议使用程序的名称。

自动生成配置

对于 x86_64 Linux 系统,你可以从 releases 页面下载 xdgnj 二进制文件。

或者,你可以使用 cabalstack 从源代码构建它,使用 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 buildstack build

Nix

nix run github:b3nj5m1n/xdg-ninja#xdgnj-bin ...

Docker

使用 ./haskell/build/ 中提供的 dockerfile。

手动创建配置

我们将使用 git 作为示例。

默认情况下,它将文件 .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)_

这是将此文件 cat 到 jq 中产生的效果:

cat example.md | jq -aRs .
"Currently not fixable.\n\n_(But you can probably just delete the dir)_\n"

现在,我们可以组装我们的最终 json 文件:

{
  "name": "git",
  "files": [
    {
      "path": "$HOME/.gitconfig",
      "movable": true,
      "help": "Luckily, the XDG spec is supported by git, so we can simply move the file to _$XDG_CONFIG_HOME/git/config_.\n"
    }
  ]
}

将此文件另存为 ./programs/ 目录中的 git.json 将导致脚本将其拾取并检查该文件。

如果你为尚未在官方存储库中的文件创建了配置,请确保创建一个 pull request,以便其他人也可以从中受益。

关于

一个 shell 脚本,用于检查你的 $HOME 目录中是否存在不需要的文件和目录。

主题

linux shell terminal xdg xdg-basedir xdg-compliance

资源

Readme

许可协议

MIT license

Activity

Stars

2.6k stars

Watchers

17 watching

Forks

152 forks

Report repository

Releases 3

v0.2.0.2 Latest Feb 4, 2024

+ 2 releases

Packages 0

No packages published

Contributors 169

+ 155 contributors

语言

页脚

GitHub © 2025 GitHub, Inc.

页脚导航

现在你无法执行该操作。