当我想要一个目录时,我使用
cd ..
但是当我想要去7个目录时除了输入七(7)次cd ..
之外还有什么办法吗?
答案 0 :(得分:54)
cd ../../../../../../../
另一个有用的导航提示是,例如,假设你继续从一个目录(称之为A)切换到另一个目录(称之为B),在你的情况下是7个目录。
所以,如果你在目录A:
A> cd ../../../../../../../
B> // Now you're in directory B and want to go back to A
B> cd -
这将立即返回目录A. -
扩展到您所在的上一个目录。
答案 1 :(得分:16)
制作别名(在你〜/ .bashrc中)
function cd_up() {
cd $(printf "%0.0s../" $(seq 1 $1));
}
alias 'cd..'='cd_up'
并使用:
$ cd.. 7
<强> 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..'
使用:
$ cd /home/user/documents/projects/reports/2014-10-01
$ cd.. doc
$ pwd
> /home/user/documents
答案 2 :(得分:8)
您可以使用pushd .
来记住一个目录,并使用popd
返回目录。
答案 3 :(得分:7)
如果有一个命令,我会使用很多,我只会做一个别名。
您可以输入
alias ..='cd ..'
alias ...='cd ../..'
然后你可以使用..
升级一级,...
升级两级。
答案 4 :(得分:6)
我发现这是一个小小的改进:
通常,当你使用cd ..返回一个目录时,你最终会在一个目录之后前进。要使这项工作,你必须使用函数而不是别名,所以而不是:
alias ..=”cd ../”
alias ..2=”cd ../../”
你可以使用:
..()
{
cd ../$@
}
..2()
{
cd ../../$@
}
然而,在使用它之后,很快就会发现你缺少这个函数的命令完成,这使它远没有那么有用。因此,我回过头来为这个函数添加了我自己的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
答案 5 :(得分:5)
你可以这样做cd ../../../../../../../
有一些cool article可以应用一些黑客来改善您的导航。
答案 6 :(得分:4)
不记得我从哪里复制过这个函数,但它对我很有用(例如你可以放入.bashrc
文件)
up() { local p= i=${1:-1}; while (( i-- )); do p+=../; done; cd "$p$2" && pwd; }
e.g。要进入7个目录,必须输入up 7
答案 7 :(得分:3)
for i in {1..7}; do cd ..; done
答案 8 :(得分:2)
您可以将以下功能添加到.bashrc
:
# ~/.bashrc
up() {
for D in $(seq 1 $1);
do
cd ..
done
}
所以用法只是:
user ~ $ up 3
user / $
答案 9 :(得分:1)
但你可以写cd ../../../..
(等等)而不是7次cd ..
答案 10 :(得分:1)
这个漂亮的功能支持双向上升。
如果您在 / a / b / c / d ,则“向上1”会转到 / a / b / c ,依此类推。这很标准,并涵盖了大多数其他答案。
现在,对于特殊部分;使用负数会从另一个方向引导你。因此,如果您在 / a / b / c / d ,则“向上-1”会转到 / a ,依此类推。
function up() {
UP=$1
if [[ $UP =~ ^[\-0-9]+$ ]]; then
if ((UP<0)); then
UP=${UP#-}
cd $(echo $PWD | cut -d/ -f1-$((UP+1)))
else
cd $(printf "%0.s../" $(seq 1 ${UP}));
fi
fi
}
可在github上下载/安装。
答案 11 :(得分:1)
对于鱼类用户,
function cdd
for x in (seq $argv)
cd ..
end
end
并将其保存到您的: 〜/的.config /鱼/功能/ cdd.fish
并且只是$ cdd 3
上3个目录。
答案 12 :(得分:1)
我制作了一个小实用程序,可以简化导航深层目录结构的过程:https://github.com/ianatha/up。
安装完成后,您可以:
$ pwd
/Users/jdoe/Developer/backend/src/main/java/com/example/service/db/
$ up example
$ pwd
/Users/jdoe/Developer/backend/src/main/java/com/example/
$ up 4
$ pwd
/Users/jdoe/Developer/backend/src/
答案 13 :(得分:0)
您可以尝试此解决方案。这对我来说很好:
#!/bin/bash
#this sctipt should take one parameter - number of steps. And do "cd" command step times.
# example usage: cd `cde 3`
NEW_PATH=$(pwd)
step="../"
upper=""
for i in seq $1
do
upper="$upper$step"
done
echo $upper
&#13;
我在〜/ .barsh文件中创建了别名。这对我来说很好。
例如,最多三个文件夹。
$ cd`cde 3`