在Shell中使用alias

本文介绍了一种在Linux环境中批量配置SSH登录别名的方法。通过编写Shell脚本来解析已保存的服务器IP地址,并利用alias命令实现快速登录。解决了频繁复制粘贴IP地址的不便。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

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

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

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

很快搞定shell脚本

1
2
3
4
5
6
7
#!/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


 

本文转自茄子_2008博客园博客,原文链接:http://www.cnblogs.com/xd502djj/p/7308600.html,如需转载请自行联系原作者。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值