Terminal
在 shell 中突出顯示文本
我一直在使用下面的方法來突出 shell 中文本的背景。
tput smso;printf " TEXT ";tput rmso;
我怎樣才能在不使用的情況下達到同樣的效果
tput
(我的意思是某種格式,比如\e[0m
printf 中的顏色)?
其轉義序列可能是終端特定的。這就是使用
tput
.$TERM
tputs 根據變數的值在數據庫中查找正確的轉義序列。在我的終端上:
$ 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 4
ANSI顏色程式碼(4是ANSI顏色藍色數字)。