在unix中更改为父目录

Vij*_*jay 13 unix shell command-line ksh

一般我们使用

cd .. 转到父目录

cd ../../转到父父目录.和

cd ../../../../../ 为第五个父目录.

这有什么简化方法吗?

我使用的shell是ksh.

Pau*_*ce. 10

这个函数适用于Bash,但可以为其他人做类似的事情(这可能在ksh和zsh中正常工作):

cdn () { pushd .; for ((i=1; i<=$1; i++)); do cd ..; done; pwd; }
Run Code Online (Sandbox Code Playgroud)

用法示例:

/some/dirs/and/subdirs$ cdn 3
/some/dirs/and/subdirs /some/dirs/and/subdirs
/some
/some$ popd
/some/dirs/and/subdirs$
Run Code Online (Sandbox Code Playgroud)

这是一个函数,它将cd指向当前工作目录上方的命名子目录:

cdu () { cd "${PWD%/$1/*}/$1"; }
Run Code Online (Sandbox Code Playgroud)

用法示例:

/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
Run Code Online (Sandbox Code Playgroud)

  • 我真的很喜欢“cdu”功能。它很简单,只依赖于 `cd` 和变量替换。 (2认同)

wal*_*lyk 6

而且我以为我很懒...

很久以前,我厌倦了输入cd ..so,因为大约 1988 年,我的标准别名之一(以及 MSDOS/Windows 的批处理文件)是up. 也许我应该扩展这个概念:

alias up='cd ..'
alias up2='cd ../..'
alias up3='cd ../../..'
alias up4='cd ../../../..'
alias up5='cd ../../../../..'
alias up6='cd ../../../../../..'
Run Code Online (Sandbox Code Playgroud)