bash - linux echo color




如何在Bash中輸出粗體文本? (3)

我假設bash運行在一個兼容vt100的終端上,用戶沒有明確關閉對格式化的支持。

首先,使用-e選項打開對echo特殊字符的支持。 稍後,使用ansi轉義序列ESC[1m ,如:

echo -e "\033[1mSome Text"

更多關於ansi轉義序列的例子在這裡: ascii-table.com/ansi-escape-sequences-vt-100.php

我正在寫一個Bash腳本,在屏幕上打印一些文本:

echo "Some Text"

我可以格式化文本嗎? 我想使它大膽。


為了在字符串上應用樣式,可以使用如下命令:

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"

這是大膽的,但事實並非如此







echo