Xdg-ninja:检查你的 $HOME 目录中是否存在不需要的文件和目录
介绍
b3nj5m1n / **xdg-ninja ** Public
- Notifications 你必须登录才能更改通知设置
- Fork 152
- Star 2.6k
一个 shell 脚本,用于检查你的 $HOME
目录中是否存在不需要的文件和目录。
许可协议
2.6k stars 152 forks Branches Tags Activity
Notifications You must be signed in to change notification settings
Additional navigation options
b3nj5m1n/xdg-ninja
main
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
遇到它知道的文件或目录时,它会告诉你是否可以将它移动到适当的位置,以及如何操作。
这些配置来自于 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
。
贡献
依赖
可选
- glow,用于在终端中渲染 Markdown (bat, pygmentize 或 highlight 可以用作备用,但 glow 的输出更清晰,因此建议使用 glow)
配置
配置在 ./programs/
目录中完成,该目录应与 xdg-ninja.sh
脚本位于同一工作目录中。可以使用 XN_PROGRAMS_DIR
环境变量覆盖此设置。
你定义一个程序,然后定义该程序无情地放入你的 $HOME
目录中的文件和目录列表。
对于每个文件/目录,你指定是否可以(重新)移动它。
如果是这种情况,你还指定有关如何在 Markdown 中完成此操作的说明。
此目录中的文件可以具有任何名称,但建议使用程序的名称。
自动生成配置
对于 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
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
资源
许可协议
Stars
Watchers
Forks
Releases 3
Packages 0
No packages published
Contributors 169
语言
页脚
GitHub © 2025 GitHub, Inc.
页脚导航
现在你无法执行该操作。