如何在Bash中输出粗体文本?

JamesRat 223 bash console formatting echo

我正在编写一个Bash脚本,可以在屏幕上打印一些文本:

echo "Some Text"

我可以格式化文本吗?我想大胆一点.

psmears.. 394

最兼容的方法是使用tput发现正确的序列发送到终端:

bold=$(tput bold)
normal=$(tput sgr0)

那么你可以使用变量$bold$normal格式化事物:

echo "this is ${bold}bold${normal} but this isn't"

这很大胆,但事实并非如此

  • 对于许多不同的任务,`tput`是一个很棒的命令[许多命令](http://stackoverflow.com/a/20983251/24874). (2认同)

avivamg.. 47

要在字符串上应用样式,可以使用如下命令:

echo -e '\033[1mYOUR_STRING\033[0m'

说明:

  • echo -e - 该-e选项意味着将解释转义(反向)字符串
  • \ 033 - 转义序列表示样式的开头/结尾
  • 小写m - 表示序列的结尾
  • 1 - 粗体属性(详见下文)
  • [0m - 重置所有属性,颜色,格式等.

可能的整数是:

  • 0 - 正常样式
  • 1 - 大胆
  • 2 - 昏暗
  • 4 - 加下划线
  • 5 - 闪烁
  • 7 - 反向
  • 8 - 看不见


Michał Trybu.. 45

我假设bash正在兼容vt100的终端上运行,用户没有明确关闭对格式化的支持.

首先,echo使用-e选项打开对特殊字符的支持.之后,使用ansi转义序列ESC[1m,如:

echo -e "\033[1mSome Text"

有关ansi转义序列的更多信息,例如:ascii-table.com/ansi-escape-sequences-vt-100.php

  • 不要忘记在字符串的末尾停止粗体格式:`echo -e"\ 033 [1mSome Text\033 [0m"`否则终端的以下行也将以粗体显示 (17认同)

roufamatic.. 13

在理论上如此:

# BOLD
$ echo -e "\033[1mThis is a BOLD line\033[0m"
This is a BOLD line

# Using tput
tput bold 
echo "This" #BOLD
tput sgr0 #Reset text attributes to normal without clear.
echo "This" #NORMAL

# UNDERLINE
$ echo -e "\033[4mThis is a underlined line.\033[0m"
This is a underlined line. 

但在实践中,它可能被解释为"高强度"颜色.

(来源:http://unstableme.blogspot.com/2008/01/ansi-escape-sequences-for-writing-text.html)

  • 如果链接死亡,请发布答案,而不仅仅是答案的链接. (2认同)