Unix 终端,“cd ..”表示特定数量的目录

ald*_*-ms 5 unix shell

假设我们有这样的目录结构:

/home/myuser/dir_1/sub_1/sub_2/sub_3
Run Code Online (Sandbox Code Playgroud)

我想从 sub_3 遍历到 dir_1,我需要做的是

cd ../../..
Run Code Online (Sandbox Code Playgroud)

我的问题是,没有更短的吗?我的意思是:

cd -t 3
Run Code Online (Sandbox Code Playgroud)

您可以在其中告诉 shell 您要返回多少个目录。

bis*_*hop 4

printf使用then构建路径cd

cdup() {
    # $1=number of times, defaults to 1
    local path
    printf -v path '%*s' "${1:-1}"
    cd "${path// /../}"
}
Run Code Online (Sandbox Code Playgroud)

用于:

cdup 4 # to go up four directories
cdup 1 # to explicitly go up one directory
cdup   # to implicitly go up one
Run Code Online (Sandbox Code Playgroud)

具有良好的特性cd,无论 N 有多大,都会被调用一次。