1个不稳定版本
0.1.0 | 2024年4月19日 |
---|
8 在 #cd
10KB
199 行
你为什么需要这个工具?
你是否发现自己过多地使用cd ..
?或者更糟糕的是,使用cd ../../../../../../..
并猜测最终到达的目录“足够接近”?如果是这样,那么这个工具就是为你准备的。
在你还没来得及说“只是更有意义地组织你的目录!”之前,有时候我出于某种原因需要处理多个并行目录树(它们松散地相互映射)。
它有什么功能?
cda <ANCESTOR>
cd
将你切换到最近的父目录。
例如:CWD: /home/jshelly/my-repos/my-project/workspace1/module1/component3/feature/feature.rs
$ cda my-project
$ pwd
/home/jshelly/my-repos/my-project
类似地,我也可以使用“my-project”的任何子字符串!
$ cda proj
$ pwd
/home/jshelly/my-repos/my-project
如果存在具有相同名称的多个父目录,则它会带你到最近的那个。否则,你可以指定你想去的父目录的哪个实例。
例如:CWD: /home/jshelly/playground/dir/playground/dir
$ cda playground 2 #Second arg is occurence. By default, it is 1.
$ pwd
/home/jshelly/playground
注意:当前工作目录(CWD)不被视为其自身的父目录。
默认情况下,搜索是从最近的父目录到最远的父目录(从右到左)。你可以使用-r
标志来反转这一点。
安装
cargoinstall cda
- 将此添加到您的shell配置文件末尾(.zshrc、.bashrc等)
cda() {
path_or_error=$(cda-bin "$@")
if [ $? -eq 0 ]; then # Path
cd $path_or_error
else # Err
echo $path_or_error
fi
}
依赖项
~1MB
~15K SLoC