cd ..向上一个文件夹。
是否有(单行)命令可以打开 n 个文件夹?
你当然可以定义一个函数来做到这一点:
$ go_up() { for i in $(seq $1); do cd ..; done }
$ go_up 3 # go 3 directories up
我不知道有任何命令可以做到这一点,但你自己创建一个很容易。例如,只需添加
cdn() {
for ((i=0;i<${1-0};i++))
do
cd ..
done
}
在你的~/.bashrc文件中,在你创建一个新的 shell 之后,你可以运行
cdn N
你会按N目录向上移动
好吧,另一个非常有趣的答案,这真的是一个单行字,向上 42 个父目录:
cd $(yes ../|head -42|tr -d \\n)
与 gniourf_gniourf 的其他答案相同,它很cd -友好(它只是比最短答案长几个字符)。
替换42为您喜欢的号码。
既然您了解了美妙命令的惊人力量yes,您就可以加入黑暗面并使用邪恶命令eval,当我们这样做时,我们可以使用可怕的反引号:
eval `yes 'cd ..;'|head -42`
这是迄今为止最短的单行,但它真的很糟糕:它使用eval, 反引号而且它cd -不友好。但是,嘿,它真的很好用而且很有趣!
您可以使用单行for循环:..
for i in {1..3}; do cd ../; done
3用你的替换n
例如:
m@mariachi:~/test/5/4/3/2/1$ pwd
/home/m/test/5/4/3/2/1
m@mariachi:~/test/5/4/3/2/1$ for i in {1..3}; do cd ../; done
m@mariachi:~/test/5/4$ pwd
/home/m/test/5/4
...但是我认为它不会比打字cd然后 ..点击tab你想要上升的每个级别快得多!:)
你多久上升一次超过五个级别?如果答案不是太频繁,我建议您将这些cd -友好别名放在您的个人资料中:
alias up2='cd ../..'
alias up3='cd ../../..'
alias up4='cd ../../../..'
alias up5='cd ../../../../..'
好处
一个有趣的方法:
cdupn() {
local a
[[ $1 =~ ^[[:digit:]]+$ ]] && printf -v a "%$1s" && cd "${a// /../}"
}
它是如何工作的?
a我们用$1空格填充变量。cdwhere 每个空格a已被替换../。用于:
cdupn 42
上到第四十个父目录。
这种方法的优点是你仍然可以cd -回到以前的目录,这与使用循环的方法不同。
绝对值得投入您的.bashrc. 或不。