使用终端命令进入n个文件夹?

时间:2013-06-29 14:18:12

标签: cd

cd ..上传一个文件夹。

是否有一个(一行)命令可以上传n个文件夹?

6 个答案:

答案 0 :(得分:4)

您确定可以定义一个函数来执行此操作:

$ go_up() { for i in $(seq $1); do cd ..; done }
$ go_up 3 # go 3 directories up

答案 1 :(得分:3)

我不知道有任何命令可以做到这一点,但很容易自己创建一个。例如,只需添加

cdn() {
  for ((i=0;i<${1-0};i++))
  do
    cd ..
  done
}
在您的~/.bashrc文件中

,在创建新shell后,您可以运行

cdn N

您将向上移动N个目录

答案 2 :(得分:3)

好吧,另一个非常有趣的答案,那就是真的一个单行,上去42个父目录:

cd $(yes ../|head -42|tr -d \\n)

与gniourf_gniourf的另一个答案相同,它是cd -友好的(并且它只是比最短答案长几个字符)。

42替换为您喜欢的号码。


现在你已经理解了精彩命令yes的惊人力量,你可以加入黑暗的一面并使用邪恶的命令eval,当我们在它时,我们可以使用可怕的反叛:

eval `yes 'cd ..;'|head -42`

这是迄今为止最短的单线,但它真的很糟糕:它使用eval,反推,而且它不是cd -友好的。但是,嘿,它运作得很好,而且很有趣!

答案 3 :(得分:2)

您可以使用单行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 !! :)

答案 4 :(得分:2)

你多久上升五级以上?如果答案是不经常我建议您将这些cd -个友好别名放在您的个人资料中:

alias up2='cd ../..'
alias up3='cd ../../..'
alias up4='cd ../../../..'
alias up5='cd ../../../../..'

优点

  • 没有bashims,没有zshisms,没有kshisms。
  • 适用于任何支持别名的shell
  • 尽可能可读和易懂。

答案 5 :(得分:1)

一个有趣的方式:

cdupn() {
    local a
    [[ $1 =~ ^[[:digit:]]+$ ]] && printf -v a "%$1s" && cd "${a// /../}"
}

它是如何运作的?

  • 我们首先检查参数确实是一个数字(一串数字)。
  • 我们使用a空格填充变量$1
  • 我们执行cd,其中a中的每个空格都已替换为../

用作:

cdupn 42

进入第四十二个父目录。

此方法的 pro 是您仍然可以cd -返回上一个目录,与使用循环的方法不同。

绝对值得投入.bashrc。或者不是。