Bash

從 echo -e 轉義字元

  • December 1, 2015

我在.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 中轉義

引用自:https://unix.stackexchange.com/questions/246410