介绍
cd
命令是我们在Ubuntu终端中使用频率非常高的一个命令,我们常用cd
命令实现不同路径下的跳转功能。但大家在使用过程中有没有发现如果你cd
到某个比较深的路径下时,又想回退到上三级目录时,你就得写:
cd ../../../
如果你需要退回的层级越多,那么你就得写更多个../
,是不是感觉非常麻烦,也不够优雅?
确实,有人也想到了这个问题,并写了一个up
脚本,可以用来实现快速回退指定层级目录,并带有Tab
键提示功能,简直不能再好用了!
下面就来介绍下如何配置这个脚本并使用。
步骤
安装过程
1、打开此链接,复制其中的脚本内容
为防止该链接失效,我把该链接中的内容复制在此:
#!/usr/bin/env sh
# up.sh: Quickly traverse up the current working path.
# Author: Shannon Moeller <me@shannonmoeller.com>
# Source to use: [ -f /path/to/up.sh ] && . /path/to/up.sh
__updir() {
if [[ "$1" == "/" || -z "$1" || -z "$2" ]]; then
return
fi
local p="$(dirname "$1")"
local a="$(basename "$p")"
local b="$(basename "$2")"
if [[ -z "$a" || -z "$b" ]]; then
return
fi
if [[ "$a" == "$b"* ]]; then
echo "$p"
return
fi
__updir "$p" "$2"
}
__upnum() {
if [[ -z "$1" || -z "$2" || ! "$2" =~ ^[0-9]+$ ]]; then
return
fi
local p="$1"
local i="$2"
while (( i-- )); do
p="$(dirname "$p")"
done
echo "$p"
}
_up() {
local p="$(dirname $PWD)"
local w="${COMP_WORDS[COMP_CWORD]}"
COMPREPLY=( $(IFS=';' compgen -S/ -W "${p//\//;}" -- "$w") )
}
up() {
# up one
if (( ! $# )); then
cd ..
return
fi
# up dir
local d="$(__updir "$PWD" "$1")"
if [[ -d "$d" ]]; then
cd "$d"
return
fi
# up num
local n="$(__upnum "$PWD" "$1")"
if [[ -d "$n" ]]; then
cd "$n"
return
fi
# fallback
if [[ $1 == - || -d $1 ]]; then
cd $1
return
fi
# usage
echo -e "usage: up [dir|num|-]\npwd: $PWD"
}
# zsh compatibility
if [[ -n ${ZSH_VERSION-} ]]; then
autoload -U +X bashcompinit && bashcompinit
fi
# tab-completion
complete -o nospace -F _up up
2、新建一个目录并创建一个up.sh
文件
我一般新建一个up
目录在~/.config
目录下:
mkdir ~/.config/up
然后新建一个up.sh
文件
touch up.sh
将上述的脚本内容拷贝到该文件中。
3、将脚本文件添加至~/.bashrc
中
echo 'source ~/.config/up/up.sh' >> ~/.bashrc
4、执行source ~/.bashrc
至此你就已经配置好up
脚本,可以使用up
命令自由回退目录。
使用示例
例如我现在cd
到一个长路径下:
$ pwd
/home/zhanghm/Programming/programming-learning-examples/C++/C_test/utils
我想回退到Programming
这一级目录,这个时候你就不用cd ../../...
来跳转了,直接执行:
up Programming
并且你会发现在执行up
命令时支持Tab
键补全,非常好用!
【参考】
1、https://segmentfault.com/a/1190000022785900
2、https://www.myoschain.com/blog/153013929742696448
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/121217.html