• 在Shell中使用alias


           以前在Linux跳机上登录其他服务器(ssh IP),为了方便,把很多服务器的IP和业务名称touch到了用户主目录下,这样方便了好多,每次ls -l 出来下就可以了,然后复制,粘贴就方便了。如下图。

      这样每次复制粘贴还是不是特别方便,所以行能不能输入业务名字,直接就登录了,仍然保持着touch的文件(方便记忆IP进行沟通),首先第一个还是想到的是alias命令。 因此开始着手写一个简单的脚本。把IP和别名对应起来。

       第一步、ls 出来这些touch出来的文件 通过AWK 进行分析 

       第二步、 使用alias 把名字和ssh IP对应起来。

    很快搞定shell脚本

    #!/bin/sh
    #ls -l IP* | awk  '{print $9}' 
    
    ls -l IP* | awk  '{print $9}' >m.list
    cat  m.list| awk -F _  'BEGIN {print("#!/bin/sh") ;print("shopt expand_aliases"); print("shopt -s  expand_aliases ")}  { cmd="alias "$3"="ssh "$2""";print(cmd) }  END {print("# end")}' >alias_dat.sh
    chmod +x alias_dat.sh
    source  /home/dongjunjie/alias_dat.sh
    

         其实调试这些脚本看着简单,但还是遇到不少坑。 主要有以下

    第一、alias 在交互式模式下,shell的alias扩展功能是打开的,因此我们可以键入自己定义的alias别名来执行对应的命令。但是,在非交互式模式下alias扩展功能默认是关闭的,此时仍然可以定义alias别名,但是shell不会将alias别名扩展成对应的命令,而是将alias别名本身当作命令执行,如果shell内置命令和PATH中均没有与alias别名同名的命令,则shell会“抱怨”找不到指定的命令。 因此需要

    shopt -s  expand_aliases  打开

    第二、expand_aliases 打开之后,执行命令,还是发现没有找到命令。 最后在shell脚本里面执行,发现是OK的,说明alias只在shell中生效了,shell执行完毕之后,有实效了。
    因此想办法,把脚本加入.bash_profile 测试OK。
    以后终于就可以简单的通过跳机来调了。
    --------------------------


    参考 打开alias shell模式。 http://www.cnblogs.com/qcly/p/3219780.html


  • 相关阅读:
    解决nginx启动后进程存在但访问不到的问题
    验证nginx配置文件遇到的路径问题
    前端npm run build打包和tar压缩示例讲解
    安装vuecodemirror支持SQL可视化
    redis学习之安装
    nginx版本升级详解
    前端二次非对称RSA加密密文太长的问题
    听《Node服务线上故障》分享的思考
    fastdfs部署及官网
    vue踩坑
  • 原文地址:https://www.cnblogs.com/xd502djj/p/7308600.html
Copyright © 2020-2023  润新知