线下测试环境,我作了个相似堡垒机的集中登陆管理,先将IP与主机名经过host文件作映射,并集中管理到某台服务器(堡垒机),而后用脚本去读取host文件,再用自定义登陆命令直接登陆的操做,可是我想在登陆的时候,能够打印出将要输入的信息,且能自动补全IP或者主机名,避免复制的麻烦linux
linux自带有这个命令,能够设置bash自动补全的动做,bash终端默认状况下shell
只须要按tab键,咱们诸如输入某个命令的前缀字段,就能够模糊匹配出来,可是对于命令的参数补全,没有默认设置
complte 直接输入命令能够查看当前自定义和默认的自动补全vim
[root@test ~]# complete
complete -o filenames -F __udisks udisks
bash
complete参数不少,用法也不少,可使用man来查看,可是man的内容实在太多,其实实现上述需求很简单,下面简单介绍下几个参数及用法服务器
-A action 后面接动做,动做以下ssh
注:可使用该命令来完成需求
]注:也可使用该命令来完成需求
]了解完命令,就很容易实现了,两种方法
1.complete -A hostname ssh测试
[root@test]# ssh ptest_21**tab键**
ptest_214 ptest_215 ptest_216 ptest_218 ptest_219spa
这样就能够补全host主机名而后登陆,是否是方便很多呢code
2.complete -W 'host1 host2 host3' ssh
我在vim ~/.bashrc里面设置,而后source便可hn=$(cat /etc/hosts |grep -v '#'|awk '{print $2}')
complete -W "$hn" ssh
ip
若是想把IP补全也加进来ip=$(cat /etc/hosts |grep -v '#'|awk '{print $1}')
complete -W "$hn $ip" ssh