線下測試環境,我作了個相似堡壘機的集中登陸管理,先將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