以sysadmin我經常RDP和SSH進入遠程管理機器的bash別名。創建通過的.bashrc
我已經創建了一個文件,$ {SERVER_FILE},每行包含指出的主機名和協議連接到一個給定的服務器時要使用一個條目。
實施例:
...
server1,ssh
winsrv,rdp
...
鑑於上述條目我希望創建+評估(RDP本身是我的系統中的腳本)執行以下操作:
alias server1='ssh server1' winsrv='rdp winsrv'
下面的代碼,當我將結果輸出剪切並粘貼至alias
命令,完美地工作:
$ echo $(sed "s/\(.*\),\(rdp\|ssh\)/\1='\2 \1' /g" ${SERVER_FILE} | tr -d '\n')
server1='ssh server1' winsrv='rdp winsrv'
$ alias server1='ssh server1' winsrv='rdp winsrv'
$ alias
alias server1='ssh server1'
alias winsrv='rdp winsrv'
SO我將其更改爲這實際上導致創建別名和我得到的錯誤:
$ alias $(sed "s/\(.*\),\(rdp\|ssh\)/\1='\2 \1' /g" ${SERVER_FILE} | tr -d '\n')
bash: alias: server1': not found
bash: alias: winsrv': not found
$ alias
alias server1=''\''ssh'
alias winsrv=''\''rdp'
建議嗎?
怎麼樣eval別名$(sed ...)「'?這對我來說似乎更加強大,因爲沒有*字擴展*的額外階段。它使結果更容易理解。 –
謝謝,這個伎倆!我還將羅蘭德的報價與優秀的結果結合起來。 – Shaun