一般情况下我们使用
cd ..
转到父目录
cd ../../
转到父父目录。和
cd ../../../../../
。
有没有简化的方法呢?
我正在使用的shell是ksh。答案 0 :(得分:10)
这个函数适用于Bash,但其他类似的东西(可能在ksh和zsh中可以正常工作):
cdn () { pushd .; for ((i=1; i<=$1; i++)); do cd ..; done; pwd; }
使用示例:
/some/dirs/and/subdirs$ cdn 3
/some/dirs/and/subdirs /some/dirs/and/subdirs
/some
/some$ popd
/some/dirs/and/subdirs$
这是一个函数cd
到当前工作目录上方的命名子目录:
cdu () { cd "${PWD%/$1/*}/$1"; }
使用示例:
/usr/share/atom/resources/app/apm/src/generator$ cdu apm
/usr/share/atom/resources/app/apm$ cdu resources
/usr/share/atom/resources$ cd -
/usr/share/atom/resources/app/apm$ cdu share
/usr/share
答案 1 :(得分:2)
我以为我很懒...
很久以前,我厌倦了输入cd ..
所以,因为大约1988年我的一个标准别名(以及MSDOS / Windows的批处理文件)是up
。也许我应该扩展这个概念:
alias up='cd ..'
alias up2='cd ../..'
alias up3='cd ../../..'
alias up4='cd ../../../..'
alias up5='cd ../../../../..'
alias up6='cd ../../../../../..'
答案 2 :(得分:2)
如果你设置这样的别名,你需要小心。 cd ../../../../..
时,您不会总是上5个目录。如果您只有2个或3个目录,那么您将结束/。亲自试试吧。
$ cd ~
$ pwd
/home/you
$ cd ../../../..
$ pwd
/
这是因为/的父目录实际上是/.
答案 3 :(得分:1)
您可以查看recent project bd
如果你在这条道路上
/home/user/project/src/org/main/site/utils/file/reader/whatever
并且您希望快速转到site
目录(而不是键入cd ../../../..
),
然后输入:
bd site
答案 4 :(得分:0)
如果您不喜欢输入或记住文件名,可以使用像NerdTree这样的目录导航目录吗?
答案 5 :(得分:0)
您可以定义别名以简化此类cd
操作。
请注意,使用../../../..
等方面的别名很容易出错,因为您必须非常确定当前目录与您之间的关系想成为。
最好使用alias
答案 6 :(得分:0)
使用cd /
转到文件系统的根目录,然后cd ~
转到您的主目录。
示例:转到您的日志主管只需cd /var/log
。
答案 7 :(得分:0)
对于Bourne类型的shell(包括ksh
),您可以编写一个shell函数:
cdup() {
set -- "${1-1}"
while test "$1" -gt 0; do
cd ..
set -- "$(($1-1))"
done
}
答案 8 :(得分:0)
这通常是我如何做到的。当然在ksh中,您可能将导航键设置为其他内容。当我使用ksh时,我使用它们将它们设置为vi样式,以便k
而不是向上箭头。
在shell脚本中,最好是明确的。如果您可以使用绝对路径名,那么执行此操作并运行如下命令:
cd /webdata/cgi-bin
如果可以运行脚本来处理不同目录中的文件,那么你可以考虑这样的事情:
TOPDIR="/webdata"
cd $TOPDIR/cgi-bin
但是,如果你真的不能做其中任何一个,那么坚持..像这样的链:
chmod +x *.py
cd ../../../cgi-bin
这很清楚。在当前工作目录中执行操作,然后向上导航3个级别并选择cgi-bin目录。任何能够理解你在shell脚本中做什么的人应该没有任何困难。如果您的脚本非常复杂,那么添加一些这样的注释会有所帮助:
# change to TOPDIR/cartsys/production/code/python
cd python
chmod +x *.py
cd ../../../cgi-bin
这意味着你在代码目录中并将一个级别更改为python,因此忘记了你在目录层次结构中的位置的读者会看到提醒,以帮助他们计算3个级别。
cd ..
<up arrow><ENTER>
<up arrow><ENTER>
<up arrow><ENTER>
<up arrow><ENTER>
答案 9 :(得分:0)
我为此用例编写了一个shell实用程序:https://github.com/kkew3/cdup。例如:
up -4
。site*
到最接近的父目录,请匹配up '/site*/'
。[pP]roj(ect)?
匹配的最近的父目录,请使用up -E '[pP]roj(ect)?'
。