在Shell中使用alias

2021-09-22 10:54:43 字數 1495 閱讀 9033

以前在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  ''

ls-l ip* |awk''>m.list

catm.list|awk-f _'begin     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模式。

在Perl中使用shell命令和管道

在perl中使用shell命令有三種方法 第一種方法,system函式格式如下 system command 若命令正常執行則返回0,否則返回非零值 此方法的缺點是不能將shell命令的輸出直接捕獲到perl程式中來 第二種方法,使用反引號 可直接將shell命令的輸出捕獲到perl程式中 即其返回...

在shell中使用while迴圈的例子

bin sh filename 2.sh b 9e 15 tmpb b while tmpb le e doecho tmpb tmpb expr tmpb 1 ok tmpb expr tmpb 1 done 執行這個指令碼後,輸出的結果為 910 1112 1314 15注意 第9行的功能和第1...

在Shell中使用函式檔案,引入檔案

需要編寫乙個較龐大的指令碼時,可能會涉及許多函式 變數。這是通常建議將眾多的函式 變數放入乙個單獨的指令碼內。這樣做的好處很明顯,不用擔心某個函式 變數是否已經被定義和使用,也不用頻繁地定義 清除函式和變數。函式檔案的格式和指令碼檔案一樣。root localhost shell cat funct...