2 个版本

0.1.1 2023 年 9 月 5 日
0.1.0 2023 年 9 月 5 日

#2853命令行工具

MIT/Apache

48KB
1K SLoC

qcd – 快速更改目录

qcd 是一个 Linux 工具,可帮助您提高在命令行中的效率。使用 qcd,您只需输入类似 qcd 3 的命令即可切换到另一个目录,并通过输入 qcd -o 回到您原来的位置。或者,您可以使用交换功能(qcd -w)在两个目录之间切换。

为此,您需要在数据库文件(sqlite3)中存储经常访问的目录。此数据库中的条目通过索引(例如示例中的值 '3')进行引用。如果您不喜欢记住索引,则可以为每个条目分配别名。索引和别名可以自由调整以满足您的需求。

此外,qcd 提供了一个堆栈概念。在示例中(qcd 3),在更改目录之前,当前工作目录被放置在堆栈上(堆栈顶部)。输入 qcd -o 将从堆栈顶部弹出(删除)路径,并将工作目录更改为该路径。

输入 qcd -h 查看完整帮助。

用法示例

更改目录

qcd ENTRY [-n]  Chdir to path with idx or alias ENTRY (w/o -n: adds work dir to stack)
qcd -o          (pop)  Chdir to top of stack, remove that entry from stack

添加或删除条目

qcd -a PATH [-i IDX] [-s ALIAS]   Add PATH to database
qcd -p [-i IDX] [-s ALIAS]        Add current working directory to database
qcd -r ENTRY                      Remove row with idx or alias ENTRY
qcd -u                            (push) Add current working directory to (top of) stack

查询

qcd -l          List all indexes, aliases and paths
qcd -q PATH     Query index of PATH
ls `qcd -e 4`   List directory contents of path with idx 4

别名匹配

您选择的别名名称可以影响您的效率。缩写别名将以独特的方式匹配到别名字符串的开始。例如,在数据库中的别名 petspeople 中,qcd pet 将匹配第一个,而 qcd pe 将不匹配任何内容。如果只有一个以字母 'a' 开头的别名,则 qcd a 已经可以完成工作。

获取 qcd

从源文件构建 qcd

您需要一个安装了 Rust 的 Linux 系统。切换到方便的目录并输入

git clone https://github.com/ClaasBontus/qcd_rs.git
cd qcd_rs
cargo build --release

成功构建后,您应该在子目录 target/release/ 中找到可执行文件(命名为 qcd_rs)。

安装

仅将 qcd 二进制文件复制到您的搜索路径中的一个目录中是 不够的(如果您想了解原因,请阅读此内容)。

  1. 将 qcd_rs 复制到您的 PATH 中的一个目录(或使用以下代码中 qcd_rs 的完整路径指定)。
  2. 将以下代码添加到您的 .bashrc.zshrc 文件中
qcdfunc()
{
  d=`qcd_rs "$@"`
  if (( $? ))
  then
    \builtin echo $d
  else
    \builtin cd $d
  fi
}

alias qcd=qcdfunc
export QCD_RS_SESSIONID=`qcd_rs --pid`

环境变量

  • QCD_RS_DBPATH: sqlite数据库的路径(默认:home-directory)。
  • QCD_RS_DBNAME: sqlite数据库文件的名称(默认:.qcd_rs.sqlite)。
  • QCD_RS_SESSIONID: 进程ID。用于为每个打开的shell提供单独的栈。

备注

  • qcd防止栈顶重复条目。
  • 栈上的旧条目(超过21天)最终会被移除。
  • 支持限于UTF-8路径

依赖项

~24-35MB
~516K SLoC