Shell - 向上导航‘n’个目录

Shell - 向上导航‘n’个目录

我经常发现自己在做这样的命令

cd ../../../../../

有没有可以使用的快捷方式,即 cd ../n 次

答案1

不,目前没有现成的命令,但编写一个命令很简单。将这些行添加到您的~/.bashrc文件中(感谢 D. Ben Knoble 提供指出变量应该是local):

function ncd(){
  local path=""
  for ((i=1;i<=$1;i++)); do
    path="../$path"
  done
  echo "Moving to $path" >&2
  cd "$path"
}

保存文件,打开一个新终端,现在你可以使用 向上移动 N 个目录ncd N。例如:

$ pwd
/home/terdon/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9
$ ncd 5
Moving to ../../../../../
$ pwd
/home/terdon/dir1/dir2/dir3/dir4
$ ncd 2
Moving to ../../
$ pwd
/home/terdon/dir1/dir2

答案2

在 Windows 世界中,Alt + 向上箭头可在 Windows 资源管理器中导航到父目录。因此,我在 中做了类似的事情~/.inputrc

"\33\33[A": "cd ..\n"

然后按 Alt + 向上箭头移动到终端中的父目录。当然,您必须按多次才能移动到更高位置,但我发现它非常快。您也可以根据自己的喜好更改快捷方式。

答案3

您可以轻松创建别名或 shell 函数来执行给定的任务。我个人使用这些:

alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'

等等,在我的 中手动定义最多很多点.bashrc

相反,shell 函数可以轻松地采用数字参数,并cd ..循环执行多次。

答案4

使用printf 技巧

function updir(){
    cd $(printf '../%.0s' {1..$1})
}

EGupdir 5将会将您移动至上 5 个目录。

相关内容