通过一个命令返回上级多层目录的方法

本文介绍了一个简单的bash脚本,用于实现在Linux系统中快速向上返回多级目录的功能。该脚本名为goback,可以通过传递一个整数参数来指定返回上级目录的层数。

在优快云论坛上看到这个问题,如下:


初用linux,经常要访问很深的目录,而且要频繁在几个目录间切换,比如有目录:
/Myproject/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9
我可能不停在这些目录间切换。 进入子目录我可以用tab键。最苦恼的是返回上层目录,需要很长的".."
例如从dir9到dir3,就要输入: cd ../../../../../../..

我想通过一个bash脚本来实现这个功能,比如取名 goback。后面再来个整数参数:
从dir9到dir3就可以用 goback 6 来实现
从dir7到dir4就可以用 goback 3 来实现
功能仅次而已。。。。


尝试实现了一下,基本上达到所要的要求。关键点就是使用source或者.使shell脚本当中的cd命令可以在当前的shell中有效。


假设我要执行的脚本在~/bin下面(我比较喜欢放在这个目录当中)。
$ cd ~/bin
$ vim goback.sh
内容如下:
#!/bin/bash 
if [ $# != 1 ]
then
  echo "a go back dir number required."
  exit 1
fi
newdir=`echo "../" | awk -v num=$1 '{for(i=1;i<=num;i++) printf($0)}'`
cd $newdir
$ vim ~/.bashrc
加入如下的东西。
alias goback="source ~/bin/goback.sh"
然后:
$ source ~/.bashrc


然后就可以测试了。
$ cd /tmp
$ mkdir -p test1/test2/test3/test4/test5/test6/test7/test8/test9/
$ cd test1/test2/test3/test4/test5/test6/test7/test8/test9/
$ pwd
/tmp/test1/test2/test3/test4/test5/test6/test7/test8/test9
$ goback 6
$ pwd
/tmp/test1/test2/test3
$ cd /tmp/test1/test2/test3/test4/test5/test6/test7/
$ pwd
/tmp/test1/test2/test3/test4/test5/test6/test7
$ goback 3
$ pwd
/tmp/test1/test2/test3/test4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值