1 个不稳定版本

0.1.0 2024 年 8 月 7 日

#483命令行工具

Download history • Rust 包仓库 124/week @ 2024-08-05 • Rust 包仓库

124 每月下载次数

MIT 许可证

33KB
777 代码行

CXD

目录执行器(cxd)提供了一个简单的界面,用于在特定目录中保存和执行命令。

背景

在处理大型代码库和多个可执行文件时,我常常在每个目录中添加自定义脚本和 Makefile。这让我不必依赖于 bash history 来记住特定的命令。然而,在一次过多的 git-merge 事件覆盖我的临时 Makefile 之后,我编写了 cxd

安装

cargo install cxd

使用

cxd 使用一个 sqlite 数据库来保存命令及其对应的目录,以便稍后执行。数据库缓存文件可以跨设备保存和重用。然而,请注意,您绝对不应该信任来自外部来源的缓存文件,因为 cxd 将会执行数据库中的任意命令。

选择缓存文件

默认情况下,cxd 将尝试在以下位置存储缓存文件,如果无法构造任何,则失败。

  1. -f FILE--file FILE
  2. $CXD_CACHE_DIR/cxd.cache
  3. $XDG_CACHE_HOME/cxd.cache
  4. $HOME/.cache/cxd.cache

添加命令

要向数据库添加命令,请使用 cxd --add <NAME> <CMD> [ARG]...

cxd --add hello echo Hi there!

这将注册一个名为 hello 的命令,该命令会打印出问候语。

如果您希望在调用命令之前切换目录到当前的工作目录 $CWD,请传递 --cwd 标志。

cxd --add --cwd build cargo build

类似地,您可以使用 --dir <DIR> 设置特定的工作目录。

cxd --add --dir /src/cxd build cargo build

如果必须设置特定的环境变量,请使用 --env <KEY>=<VALUE>

cxd --add --env SOME_ENV=hi hello printenv SOME_ENV

执行命令

要从数据库中执行命令,请使用 cxd <CMD>

cxd hello

删除命令

要从数据库中删除命令,请使用 cxd --remove <CMD>

cxd --remove hello

列出

要列出数据库中的所有命令,请使用 cxd --list

cxd --list

清除

要清除数据库中的所有命令,请使用 cxd --clear

cxd --clear

技巧

使用多个缓存文件

为特定命令分割缓存文件可能很有用。一个简单且方便的方法是设置别名。

例如,假设您想要两个独立的缓存文件,一个用于娱乐,一个用于工作。

然后您可以将以下内容添加到您的 .bashrc.zshrc 或等效文件中。

alias build="cxd -f .cache/cxd.build.cache"
alias play="cxd -f .cache/cxd.play.cache"

这样,您就可以像运行两个不同的命令 cxdbuildplay 一样运行每个缓存文件。

依赖项

~23MB
~442K SLoC