#cd #shell #utility #command-line-utilities

app cda

一个用于快速切换到父目录的shell实用工具!

1个不稳定版本

0.1.0 2024年4月19日

8#cd

MIT 许可协议

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标志来反转这一点。

安装

  1. cargoinstall cda
  2. 将此添加到您的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