如果我在一个很深的目录中a/b/c/d/e/f/g/h/i/j
并且想要返回a/b/c
,我必须使用../../../../../../../
。
是否有我可以通过数字传递的命令,例如cd up 7
,来加快此操作?
答案1
你可以编写这样的函数:
up() {
local path i
for (( i=0; i < $1; i++ )); do
path+=../
done
cd "$path"
}
将其放入您的 中~/.bashrc
,然后您可以运行例如up 7
上移 7 个目录。您cd up 7
也可以覆盖 cd 以允许,但只需创建一个新命令即可,更短且更省事。
答案2
如果您在两个目录之间切换,则可以使用cd -
在两者之间切换。
如果您想收藏一些可能经常访问的目录cd
,请使用pushd
- popd
> google 获取更多信息。
或者,如果您知道您必须cd
经常拜访第七位祖父母,您可以创建一个别名,例如:
alias cd7up='cd ../../../../../../../'
答案3
创建别名可以作为一种临时解决方案,但是如果您想要一些更永久的东西,不将您限制在预设中,我建议编写一个函数来执行此操作并将其包含在您的 .bashrc 文件中。
# Go up directory tree X number of directories
function up() {
COUNTER="$@";
# default $COUNTER to 1 if it isn't already set
if [[ -z $COUNTER ]]; then
COUNTER=1
fi
# make sure $COUNTER is a number
if [ $COUNTER -eq $COUNTER 2> /dev/null ]; then
nwd=`pwd` # Set new working directory (nwd) to current directory
# Loop $nwd up directory tree one at a time
until [[ $COUNTER -lt 1 ]]; do
nwd=`dirname $nwd`
let COUNTER-=1
done
cd $nwd # change directories to the new working directory
else
# print usage and return error
echo "usage: up [NUMBER]"
return 1
fi
}
答案4
在 Windows 世界中,Alt + 向上箭头可在 Windows 资源管理器中导航到父目录。因此,我在 中做了类似的事情~/.inputrc
:
"\33\33[A": "cd ..\n"
然后按 Alt + 向上箭头移动到终端中的父目录。当然,您必须按多次才能移动到更高位置,但我发现它非常快。您也可以根据自己的喜好更改快捷方式。