Ubuntu下使用up命令替代cd ../../一次性回退多级目录

介绍

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

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值