假设我们有这个目录结构:
/home/myuser/dir_1/sub_1/sub_2/sub_3
我想从sub_3遍历到dir_1,我需要做的是
cd ../../..
我的问题是,有没有更短的? 我的意思是这样的:
cd -t 3
在那里你可以告诉shell有多less目录你想回去。
使用printf
构建路径,然后cd
到它:
cdup() { # $1=number of times, defaults to 1 local path printf -v path '%*s' "${1:-1}" cd "${path// /../}" }
用于:
cdup 4 # to go up four directories cdup 1 # to explicitly go up one directory cdup # to implicitly go up one
有一个不错的属性, cd
被称为一次,不管N有多大。
为我在{0..2}; 做CD ..; DONE
cd ~/dir_1
也应该这样做。 当然,这只有当你在你家目录的某个地方时才有效。
我只是几个星期前做了一个Zsh完成功能来做到这一点。 答案就在这里 。
它允许你键入cd .....
然后按Tab(或返回)将点扩大到相关的目录数量。
你可以把你的.bashrc中的cdup
alias cdup='_(){ a=$1;while ((a--));do cd ..;done;};_'
要么
cdup() { a=$1;while ((a--));do cd ..;done; }
测试做两个CD ..
cdup 2