bash - linux echo color
如何在Bash中輸出粗體文本? (3)
我正在寫一個Bash腳本,在屏幕上打印一些文本:
echo "Some Text"
我可以格式化文本嗎? 我想使它大膽。
我假設bash運行在一個兼容vt100的終端上,用戶沒有明確關閉對格式化的支持。
首先,使用-e
選項打開對echo
特殊字符的支持。 稍後,使用ansi轉義序列ESC[1m
,如:
echo -e "\033[1mSome Text"
更多關於ansi轉義序列的例子在這裡: ascii-table.com/ansi-escape-sequences-vt-100.php
為了在字符串上應用樣式,可以使用如下命令:
echo -e '\033[1mYOUR_STRING\033[0m'
說明:
- echo -e -
-e
選項表示將解釋轉義(反斜杠)的字符串 - \ 033 - 轉義序列表示樣式的開始/結束
- 小寫m - 表示序列的結尾
- 1 - 粗體屬性(請參閱下面的更多信息)
- [0m - 重置所有屬性,顏色,格式等
可能的整數是:
- 0 - 正常樣式
- 1 - 粗體
- 2 - 暗淡
- 4 - 加下劃線
- 5 - 閃爍
- 7 - 反向
- 8 - 隱形
這種做法最兼容的方法是使用tput
來發現發送給終端的正確序列:
bold=$(tput bold)
normal=$(tput sgr0)
那麼你可以使用變量$bold
和$normal
來格式化東西:
echo "this is ${bold}bold${normal} but this isn't"
給
這是大膽的,但事實並非如此