Bash
從 echo -e 轉義字元
我在
.bashrc
用於日誌的文件中有以下內容:function log(){ RED="\e[0;31m" RESET="\e[0m" echo -e "${RED}$(date)" "${RESET}$*" >> "$HOME"/mylog.txt }
但是當我做一些帶有撇號的事情時,它會出現某種提示並且沒有正確記錄它。
如何轉義輸入到文件中的所有文本?
例子:
$ log this is a testing's post > hello > > ^C $
謝謝。
echo -e
您遇到的問題與您的log()
功能無關。問題在於撇號:
log this is a testing's post
外殼(在您的情況下為 bash)對某些字元具有特殊含義。撇號(單引號)用於引用整個字元串,並防止大多數其他類型的插值。**bash 期望它們成對出現,**這就是為什麼在您鍵入第二個提示行之前您會得到額外的提示行。如果您想在字元串中使用文字單引號,則需要通過 轉義它來告訴 bash,
\'
如下所示:log this is a testing\'s post
再次,
log
是題外話。echo
如果你願意,你可以用普通的舊試試這個:echo this is a testing\'s post
有關更多資訊,請參閱哪些字元需要在 bash 中轉義。