更快地爬上目录树

更快地爬上目录树

如果我在一个很深的目录中a/b/c/d/e/f/g/h/i/j并且想要返回a/b/c,我必须使用../../../../../../../

是否有我可以通过数字传递的命令,例如cd up 7,来加快此操作?

答案1

你可以编写这样的函数:

up() {
    local path i
    for (( i=0; i < $1; i++ )); do
        path+=../
    done
    cd "$path"
}

将其放入您的 中~/.bashrc,然后您可以运行例如up 7上移 7 个目录。您cd up 7也可以覆盖 cd 以允许,但只需创建一个新命令即可,更短且更省事。

答案2

如果您在两个目录之间切换,则可以使用cd -在两者之间切换。

如果您想收藏一些可能经常访问的目录cd,请使用pushd- popd> google 获取更多信息。

或者,如果您知道您必须cd经常拜访第七位祖父母,您可以创建一个别名,例如:

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

答案3

创建别名可以作为一种临时解决方案,但是如果您想要一些更永久的东西,不将您限制在预设中,我建议编写一个函数来执行此操作并将其包含在您的 .bashrc 文件中。

来源

# Go up directory tree X number of directories
function up() {
        COUNTER="$@";
    # default $COUNTER to 1 if it isn't already set
if [[ -z $COUNTER ]]; then
    COUNTER=1
fi
# make sure $COUNTER is a number
if [ $COUNTER -eq $COUNTER 2> /dev/null ]; then
    nwd=`pwd` # Set new working directory (nwd) to current directory
    # Loop $nwd up directory tree one at a time
    until [[ $COUNTER -lt 1 ]]; do
        nwd=`dirname $nwd`
        let COUNTER-=1
    done
    cd $nwd # change directories to the new working directory
else
    # print usage and return error
    echo "usage: up [NUMBER]"
    return 1
fi
}

答案4

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

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

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

相关内容