2013-07-12 52 views
1

我,包括我的.bashrc此行後得到的文件錯誤的意外結束意外結束

alias domsrv01='echo -e ?HT_R8\'% | xclip ; ssh 10.50.0.35' 

從呼應XCLIP所需的退出是:

HT_R8 「%

正如你可能已經猜到,這是一個密碼,我不能改變它,以便:

如何從密碼內部轉義單引號字符來修復EOF錯誤?

此外,我不確定單引號是否是唯一的問題,可以「?」和「%」也可以用有趣的方式解釋?

+1

這是怎麼回事? 'alias domsrv01 =「echo -e \」?HT_R8 \'%\「| xclip; ssh 10.50.0.35」' – fedorqui

+0

所以你剛剛發佈你的*密碼*? – devnull

+1

@devnull當然不是確切的密碼,但它仍然包含與原始相同的特殊字符。 – sergei

回答

1

您不能在bash中的單引號內直接轉義單引號。但是,由於bash會連接相鄰的字符串,因此可以使用此構造來代替'text'"'"'moretest'。實際上,您使用單引號結束單引號字符串,並立即添加雙引號單引號,然後添加剩餘字符串(用單引號引起來)。在您的具體示例中,命令是這樣的:

alias domsrv01='echo -e ?HT_R8\'"'"'% | xclip ; ssh 10.50.0.35' 

的話題更多的討論是源泉在這裏:How to escape single-quotes within single-quoted strings?

編輯:添加人@GordonDavisson

+0

或''text'\''moretest''(與'alias'命令相同,沒有參數輸出。) – anishsane

+1

由於某些原因,這仍然失敗。試試這個:alias test1 ='echo -e?HT_R8'「'」'%| xclip | xclip -o'。它應該將回顯輸出返回給xclip,但它不會。 – sergei

+0

@sergei你是對的,它不是......解決方法可能是使用像'test2(){echo -e'?HT_R8'''''''''這樣的函數。 xclip | xclip -o; ''。 (如果使用相同的名稱,則首先取消現有別名) – user000001

1

別名是注意到缺少反彈旨在用於短文本替換,而不是完整的shell命令。使用功能:

domsrv01() { 
    echo -e ?HT_R8\'% | xclip ; ssh 10.50.0.35 
} 
+0

這個別名文件開始作爲100多個服務器的連接管理器的懶惰替換。我可能需要在未來的某個時候轉移職能,所以我會牢記這一點。 – sergei