一般来说,我们使用
cd ..
用于转到父目录
cd ../../
去父母的父目录。和
cd ../../../../../
对于第 5 个父目录。
有什么简化的方法吗?
我使用的shell是ksh。
一般来说,我们使用
cd ..
用于转到父目录
cd ../../
去父母的父目录。和
cd ../../../../../
对于第 5 个父目录。
有什么简化的方法吗?
我使用的shell是ksh。
此功能适用于 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
我还以为我很懒...
很久以前,我厌倦了cd ..
这样打字,因为大约在 1988 年,我的一个标准别名(以及 MSDOS/Windows 的批处理文件)是up
. 也许我应该扩展这个概念:
alias up='cd ..'
alias up2='cd ../..'
alias up3='cd ../../..'
alias up4='cd ../../../..'
alias up5='cd ../../../../..'
alias up6='cd ../../../../../..'
如果您设置任何这样的别名,您需要小心。当你cd ../../../../..
. 如果你在 / 下只有 2 或 3 个目录,你将在 / 中结束。自己试试这个。
$ cd ~
$ pwd
/home/you
$ cd ../../../..
$ pwd
/
这是因为 / 的父目录实际上是 /。
您可以查看最近的项目bd
如果你在这条路上
/home/user/project/src/org/main/site/utils/file/reader/whatever
并且您想快速转到site
目录(而不是键入cd ../../../..
),
然后只需键入:
bd site
如果您不喜欢键入或记住文件名,您可以使用像 NerdTree 之类的东西来导航目录?
您可以定义别名来简化这种cd
操作。
请注意,在等方面使用别名很容易出错../../../..
,因为您必须非常确定当前目录与您想要的位置之间的关系。
最好使用绝对路径alias
用于cd /
转到文件系统的根目录,并cd ~
转到您的主目录。
示例:去你的日志主管只是做cd /var/log
.
对于 Bourne 类型的 shell(包括ksh
),您可以编写一个 shell 函数:
cdup() {
set -- "${1-1}"
while test "$1" -gt 0; do
cd ..
set -- "$(($1-1))"
done
}
这通常是我的做法。当然,在 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>
我为此用例编写了一个 shell 实用程序:https ://github.com/kkew3/cdup 。作为一些例子:
up -4
.site*
,请使用up '/site*/'
.[pP]roj(ect)?
,请使用up -E '[pP]roj(ect)?'
.