![使用 cd 转到上层目录](https://linux22.com/image/1322171/%E4%BD%BF%E7%94%A8%20cd%20%E8%BD%AC%E5%88%B0%E4%B8%8A%E5%B1%82%E7%9B%AE%E5%BD%95.png)
我正在处理 Java 项目,这些项目经常会产生深层嵌套的文件夹(/path/to/project/com/java/lang/whatever 等),有时需要能够向上跳转,比如说 4 个目录级别。输入 cd ../../../.. 很麻烦,而且我不想使用符号链接。cd 是否有一些标志可以让您向上跳转多个目录级别(在我看来,应该是 cd -u 4 之类的)?不幸的是,我找不到任何专门针对 cd 的手册页,而只是得到无用的“内置”页面。
答案1
一个简单的函数,也有一个别名:
function cd_up() {
cd $(printf "%0.s../" $(seq 1 $1 ));
}
alias 'cd..'='cd_up'
(如果您希望在每个实例中都使用它,则可以定义它~/.bashrc
)。
使用起来很简单:
$ cd.. 10
答案2
或者...试试这个:(谷歌万岁)
使用 ..n 向上导航目录:
在下面的例子中,..4 用于上移 4 个目录级别,..3 用于上移 3 个目录级别,..2 用于上移 2 个目录级别。
将以下别名添加到.bash_profile并重新登录。
别名 ..="cd .."
别名..2="cd../.."
别名..3="cd ../../.."
(ETC)
答案3
简单、低技术含量的解决方案,无需任何设置。bash
不过,只适用于具有 -style 命令编辑的 shell。
- 类型
cd ..
- 按Up-arrow Return需要按多次。如果用两根手指,速度会非常快。
答案4
您可以编写一个函数(它必须是一个函数,因为您想要改变 shell 本身的状态,即工作目录;外部命令只会影响它自己的进程)。
这是一个将上升多个级别作为参数传递的函数(默认值为 1):
up() {
# default parameter to 1 if non provided
declare -i d=${@:-1}
# ensure given parameter is non-negative. Print error and return if it is
(( $d < 0 )) && (>&2 echo "up: Error: negative value provided") && return 1;
# remove last d directories from pwd, append "/" in case result is empty
cd "$(pwd | sed -E 's;(/[^/]*){0,'$d'}$;;')/";
}
使用方式如下:
up 4