Terminal

在 shell 中突出顯示文本

  • August 12, 2016

我一直在使用下面的方法來突出 shell 中文本的背景。

tput smso;printf " TEXT ";tput rmso;

我怎樣才能在不使用的情況下達到同樣的效果tput(我的意思是某種格式,比如\e[0mprintf 中的顏色)?

其轉義序列可能是終端特定的。這就是使用tput. $TERMtputs 根據變數的值在數據庫中查找正確的轉義序列。

在我的終端上:

$ tput smso | sed -n l
\033[3m$
$ tput rmso | sed -n l
\033[23m$

所以我可以這樣做:

$ printf '\033[3m%s\033[23m\n' "stand out"

但我不能確定這是否適用於其他終端。

如果不想tput每次都呼叫,可以執行一次並儲存輸出:

smso=$(tput smso)  rmso=$(tput rmso)
printf '%s\n' "${smso}stand out${rmso}"

注意smso是“Start Mode Stand-Out”,它不適用於反向影片,儘管許多終端使用反向影片使文本突出。如果你想要反向影片,它是tput rev(被取消tput sgr0),如果你想設置背景顏色,使用tput setab 4ANSI顏色程式碼(4是ANSI顏色藍色數字)。

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