我,包括我的.bashrc此行後得到的文件錯誤的意外結束意外結束
alias domsrv01='echo -e ?HT_R8\'% | xclip ; ssh 10.50.0.35'
從呼應XCLIP所需的退出是:
HT_R8 「%
正如你可能已經猜到,這是一個密碼,我不能改變它,以便:
如何從密碼內部轉義單引號字符來修復EOF錯誤?
此外,我不確定單引號是否是唯一的問題,可以「?」和「%」也可以用有趣的方式解釋?
我,包括我的.bashrc此行後得到的文件錯誤的意外結束意外結束
alias domsrv01='echo -e ?HT_R8\'% | xclip ; ssh 10.50.0.35'
從呼應XCLIP所需的退出是:
HT_R8 「%
正如你可能已經猜到,這是一個密碼,我不能改變它,以便:
如何從密碼內部轉義單引號字符來修復EOF錯誤?
此外,我不確定單引號是否是唯一的問題,可以「?」和「%」也可以用有趣的方式解釋?
您不能在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
或''text'\''moretest''(與'alias'命令相同,沒有參數輸出。) – anishsane
由於某些原因,這仍然失敗。試試這個:alias test1 ='echo -e?HT_R8'「'」'%| xclip | xclip -o'。它應該將回顯輸出返回給xclip,但它不會。 – sergei
@sergei你是對的,它不是......解決方法可能是使用像'test2(){echo -e'?HT_R8'''''''''這樣的函數。 xclip | xclip -o; ''。 (如果使用相同的名稱,則首先取消現有別名) – user000001
別名是注意到缺少反彈旨在用於短文本替換,而不是完整的shell命令。使用功能:
domsrv01() {
echo -e ?HT_R8\'% | xclip ; ssh 10.50.0.35
}
這個別名文件開始作爲100多個服務器的連接管理器的懶惰替換。我可能需要在未來的某個時候轉移職能,所以我會牢記這一點。 – sergei
這是怎麼回事? 'alias domsrv01 =「echo -e \」?HT_R8 \'%\「| xclip; ssh 10.50.0.35」' – fedorqui
所以你剛剛發佈你的*密碼*? – devnull
@devnull當然不是確切的密碼,但它仍然包含與原始相同的特殊字符。 – sergei