Linux通过别名快速进入某个路径

最近在配置一台Linux服务器,需要频繁的操作cd命令,到不同的文件路径下,总是感觉很麻烦。由于之前的一家公司,公司大佬写了一个脚本,就是在第一次进入某个目录下时,save一个别名,然后下次只要执行【go 别名】就能直接进入到之前的那个目录,个人感觉那个脚本体验感很好。所以,我也想实现这个功能,奈何技术很菜,只能写一个简易版的脚本。

一:保存别名以及路径脚本【s】

首先,我说一下脚本实现的简单逻辑。当我进入到某一个目录底下时,我要将别名和目录的地址(就是pwd显示的绝对路径地址)保存下来,保存在path.txt中,格式如下:

别名1:路径1
别名2:路径2
别名3:路径3

然后,当我想进入某一个目录时,我输入别名,我能根据别名找到那个绝对路径,然后执行cd 命令。比如我执行【go 别名1】,当前终端能进入【路径1】中。
ok,基本思路确定,首先是save命令,我先在/bin目录下新建一个s脚本,如下:

#!/bin/bash
param=$1
CURRENT=`pwd`;
while read -r line; do
       pname=`echo $line | cut -d \: -f 1`;
       if [[ $param != $pname ]];then
               echo "${line}"
         echo "${line}" >> /bin/path2.txt
       fi
    done < /bin/path.txt
echo "${param}:${CURRENT}" >> /bin/path2.txt
rm -rf /bin/path.txt
mv /bin/path2.txt /bin/path.txt

【param】标识存的别名,【CURRENT】为当前路径

这里呢,有一个问题,当我存一个已经存在的别名时,我需要将原本的别名的绝对路径替换掉。
比如:我在【路径1】下存入【别名1】,然后我在【路径2】也存入【别名1】,此时我需要将path.txt中的【别名1】的路径更新【路径2】。
然后再网上查到Linux用户替换或者删除文本内容的命令【sed】,但是我在编写使用时,总是报错,总之就是我太菜了,不会用。
所以我就换了一个方法代替【sed】应该执行的【替换或者删除】功能,具体就是:
1:每次执行s命令时,循环读取path.txt的每一行,获取【别名x】
2:判断【别名x】与当前存入【别名y】是不是相同,不相同,追加存入path2.txt,相同不做处理
3:循环读取结束后,将【别名y】以及当前的路径追加存入path2.txt
4:删除path.txt,然后将path2.txt重命名为path.txt

二:快速进入路径脚本【g】

因为在【s】脚本中,已经将【别名】以及路径保存在path.txt中,所以【g】脚本需要将【别名】对应的【路径】找到,然后cd到【路径】下。

#!/bin/bash
param=$1
GO_PATH="/root";
while read -r line; do
       l=$line;
       pname=`echo $line | cut -d \: -f 1`;
       TXT_PATH=`echo $line | cut -d \: -f 2`;
       if [[ $param = $pname ]];then
                GO_PATH=$TXT_PATH;
                break;
        fi
    done < /bin/path.txt
cd $GO_PATH;
pwd;

最后将两个脚本赋权:chmod -R 777 s,chmod -R 777 g。
当我满心欢喜的觉得搞定了时,不管我怎么使用g命令,就是不能进入目标路径。j就像这样:
在这里插入图片描述
明明pwd打印的路径是对的,但是命令行的路径还在原地不动,人傻了啊,菜鸡怀疑人生啊。
最后网上查了一下,大概的原因呢就是shell脚本在执行cd命令是,会创建一个子shell,然后把子shell的操作路径切换到目标位置了。但是,我需要的是当前执行脚本的命令行跳转路径啊。最后在网上找到了source命令,用source (也可以用 . 代替source)命令去执行脚本,就能跳转。
在这里插入图片描述
不知道有没有大佬指点一下,能否不用source命令,实现这样的功能,或者在我的脚本上将source命令融合进去。(我个人试过在【g】脚本中,将source加在 cd 命令之前,但是貌似不生效)。
最后,看一下一个完整的操作过程:
1:原本的path.txt
在这里插入图片描述
2:存入新的内容
在这里插入图片描述
3: 用新的别名进入路径
在这里插入图片描述
4:新路径存入相同的别名,并执行
在这里插入图片描述

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值