使用 cd 进入多个目录级别

Tos*_*ock 50 linux command-line

我正在处理经常导致深度嵌套文件夹(/path/to/project/com/java/lang/whatever 等)的 java 项目,有时希望能够向上跳转,例如,4 个目录级别。键入 cd ../../../.. 很痛苦,我不想符号链接。cd 是否有一些标志可以让您进入多个目录级别(在我看来,它类似于 cd -u 4)?不幸的是,我找不到任何专门用于 cd 的手册页,而只是获得了无用的“内置”页面。

小智 41

一个简单的函数,也有别名:

function cd_up() {
  cd $(printf "%0.s../" $(seq 1 $1 ));
}
alias 'cd..'='cd_up'
Run Code Online (Sandbox Code Playgroud)

~/.bashrc如果您希望在每个实例中都使用它,您可以定义它)。

使用起来很简单:

$ cd.. 10
Run Code Online (Sandbox Code Playgroud)

  • 好答案; 你可能想指出,这比诸如 `eval $(printf "cd ..;%.s" $(seq $1))` 之类的解决方案更好,其中 `cd` 多次,因为 `~-` 又名 `$ OLDPWD` 设置为调用前的工作目录,而不是中间目录。PS - 如果需要,它可以简化为 `cd $(printf %.s../ $(seq "$1"))`。 (4认同)

cut*_*tjm 32

或者......试试这个:(是的谷歌)

使用 ..n 向上导航目录:

在下面的示例中,..4 用于上 4 级目录,..3 用于上 3 级目录,..2 用于上 2 级目录。

将以下别名添加到 .bash_profile 并重新登录。

别名 ..="cd .."

别名 ..2="cd ../.."

别名 ..3="cd ../../.."

(等等)

黑客 #2

  • 我宁愿使用别名 `..`、`...` 和 `..`,因为它们输入速度更快,但别名的原理当然是相同的。 (11认同)

Tom*_*ych 14

一种不需要任何设置的简单、低技术的解决方案。但是,仅适用于具有bash-style 命令编辑功能的shell 。

  • 类型 cd ..
  • Up-arrow Return根据需要按多次。如果您使用两个手指,速度会非常快。

  • 哈哈,我猜这个答案不错:) (2认同)

小智 7

原来正确的答案是“cd +n”,其中 n 是您想要上升的级别数。太糟糕了,这在任何地方都没有记录!

  • 至少它在 bash 中不起作用。 (20认同)
  • 不适用于 Debian 附带的 bash 4.2.25。出于好奇,您使用的是什么 *nix 和/或 shell? (5认同)

mgi*_*ild 7

您可以编写一个函数(它必须是一个函数,因为您想要更改 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'}$;;')/";
}
Run Code Online (Sandbox Code Playgroud)

像这样使用它:

up 4
Run Code Online (Sandbox Code Playgroud)