在linux上找几个目录

use*_*872 37 linux cd

当我想要一个目录时,我使用

cd ..

但是当我想要去7个目录时除了输入七(7)次之外还有什么方法可以做到这一点cd ..吗?

Flo*_*ciu 55

cd ../../../../../../../
Run Code Online (Sandbox Code Playgroud)

另外一个有用的导航提示是,例如,假设你继续从一个目录(称之为A)切换到另一个目录(称之为B),在你的情况下是7个目录.

所以,如果你在目录A:

A> cd ../../../../../../../
B> // Now you're in directory B and want to go back to A
B> cd -
Run Code Online (Sandbox Code Playgroud)

这将直接返回目录A. -扩展到您所在的上一个目录.

  • `cd -`命令很有意思.是否有相同的窗户? (4认同)

Gri*_*y K 17

别名(在你〜/ .bashrc中)

function cd_up() {
  cd $(printf "%0.0s../" $(seq 1 $1));
}
alias 'cd..'='cd_up'
Run Code Online (Sandbox Code Playgroud)

并使用:

$ cd.. 7
Run Code Online (Sandbox Code Playgroud)

UPD: 或者在当前路径中制作更强大的变体cd到dir名称:

# cd up to n dirs
# using:  cd.. 10   cd.. dir
function cd_up() {
  case $1 in
    *[!0-9]*)                                          # if no a number
      cd $( pwd | sed -r "s|(.*/$1[^/]*/).*|\1|" )     # search dir_name in current path, if found - cd to it
      ;;                                               # if not found - not cd
    *)
      cd $(printf "%0.0s../" $(seq 1 $1));             # cd ../../../../  (N dirs)
    ;;
  esac
}
alias 'cd..'='cd_up'                                # can not name function 'cd..'
Run Code Online (Sandbox Code Playgroud)

使用:

$ cd /home/user/documents/projects/reports/2014-10-01
$ cd.. doc
$ pwd
> /home/user/documents
Run Code Online (Sandbox Code Playgroud)


Cha*_*aka 8

您可以使用它pushd .来记住一个目录并popd返回它.


Dan*_*sen 7

如果有一个命令,我会使用很多,我只会做一个别名.

你可以输入

alias ..='cd ..'
alias ...='cd ../..'
Run Code Online (Sandbox Code Playgroud)

然后你可以使用..一级升级并...升级两级.


Rus*_*art 6

我发现这是一个小小的改进:

通常,当您使用cd ..返回一个目录时,您最终会继续前进一个目录.要使这项工作,你必须使用函数而不是别名,所以而不是:

alias ..=”cd ../”
alias ..2=”cd ../../”
Run Code Online (Sandbox Code Playgroud)

您可以使用:

..()
{
cd ../$@
}
..2()
{
cd ../../$@
}
Run Code Online (Sandbox Code Playgroud)

但是,在使用它之后,很快就会发现你缺少这个函数的命令完成,这使它远没有那么有用.因此,我回过头来为这个函数添加了我自己的bash完成函数,可以粘贴到〜/ .bashrc或任何从你的〜/ .bashrc中调用的文件(例如〜/ .bash_completion),如果你想避免的话混乱.这是完成代码:

_..()
{
local cur=../${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -d — $cur) )
local i=${#COMPREPLY[*]}
while [ $((--i)) -ge 0 ]; do
COMPREPLY[$i]=$(echo ${COMPREPLY[$i]} | sed -r ‘s/(\.\.\/)*//’)
done
}
complete -F _.. -o nospace -S / ..

_..2()
{
local cur=../../${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -d — $cur) )
local i=${#COMPREPLY[*]}
while [ $((--i)) -ge 0 ]; do
COMPREPLY[$i]=$(echo ${COMPREPLY[$i]} | sed -r ‘s/(\.\.\/)*//’)
done
}
complete -F _..2 -o nospace -S / ..2
Run Code Online (Sandbox Code Playgroud)


Mak*_*zin 5

你可以这样做 cd ../../../../../../../

有一篇很酷的文章介绍了一些可以用来改善导航的黑客攻击.


dav*_*dav 5

.bashrc不记得我从哪里复制了这个函数,但它对我来说非常有用(例如,您可以放入文件中)

up() { local p= i=${1:-1}; while (( i-- )); do p+=../; done; cd "$p$2" && pwd; }

例如,要向上移动 7 个目录,需要输入up 7