在Shell中使用alias
? ? ? ?以前在Linux跳機(jī)上登錄其他服務(wù)器(ssh IP),為了方便,把很多服務(wù)器的IP和業(yè)務(wù)名稱touch到了用戶主目錄下,這樣方便了好多,每次ls -l 出來(lái)下就可以了,然后復(fù)制,粘貼就方便了。如下圖。
?
? 這樣每次復(fù)制粘貼還是不是特別方便,所以行能不能輸入業(yè)務(wù)名字,直接就登錄了,仍然保持著touch的文件(方便記憶IP進(jìn)行溝通),首先第一個(gè)還是想到的是alias命令。 因此開(kāi)始著手寫(xiě)一個(gè)簡(jiǎn)單的腳本。把IP和別名對(duì)應(yīng)起來(lái)。
? ?第一步、ls 出來(lái)這些touch出來(lái)的文件 通過(guò)AWK 進(jìn)行分析?
? ?第二步、 使用alias 把名字和ssh IP對(duì)應(yīng)起來(lái)。
很快搞定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? 其實(shí)調(diào)試這些腳本看著簡(jiǎn)單,但還是遇到不少坑。 主要有以下
第一、alias?在交互式模式下,shell的alias擴(kuò)展功能是打開(kāi)的,因此我們可以鍵入自己定義的alias別名來(lái)執(zhí)行對(duì)應(yīng)的命令。但是,在非交互式模式下alias擴(kuò)展功能默認(rèn)是關(guān)閉的,此時(shí)仍然可以定義alias別名,但是shell不會(huì)將alias別名擴(kuò)展成對(duì)應(yīng)的命令,而是將alias別名本身當(dāng)作命令執(zhí)行,如果shell內(nèi)置命令和PATH中均沒(méi)有與alias別名同名的命令,則shell會(huì)“抱怨”找不到指定的命令。 因此需要
shopt -s expand_aliases 打開(kāi)第二、expand_aliases 打開(kāi)之后,執(zhí)行命令,還是發(fā)現(xiàn)沒(méi)有找到命令。 最后在shell腳本里面執(zhí)行,發(fā)現(xiàn)是OK的,說(shuō)明alias只在shell中生效了,shell執(zhí)行完畢之后,有實(shí)效了。
因此想辦法,把腳本加入.bash_profile 測(cè)試OK。
以后終于就可以簡(jiǎn)單的通過(guò)跳機(jī)來(lái)調(diào)了。
--------------------------
參考 打開(kāi)alias shell模式。 http://www.cnblogs.com/qcly/p/3219780.html
?
總結(jié)
以上是生活随笔為你收集整理的在Shell中使用alias的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: AI创作享有版权吗?
- 下一篇: 南洋股份拟57亿元收购天融信 老牌安全厂