如何在Bash中输出粗体文本?
我正在写一个Bash脚本,在屏幕上打印一些文本:
echo "Some Text"
我可以格式化文本吗? 我想使它大胆。
这种做法最兼容的方法是使用tput
发现正确的序列发送到terminal:
bold=$(tput bold) normal=$(tput sgr0)
那么你可以使用variables$bold
和$normal
来格式化东西:
echo "this is ${bold}bold${normal} but this isn't"
给
这是大胆的,但这不是
我假设bash运行在一个vt100兼容的terminal上,用户没有明确地closures对格式的支持。
首先,使用-e
选项打开对echo
特殊字符的支持。 之后,使用ansi转义序列ESC[1m
,如:
echo -e "\033[1mSome Text"
更多关于ansi转义序列的例子在这里: ascii-table.com/ansi-escape-sequences-vt-100.php
理论上是这样的:
# 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 )
为了在你的string上回显一些样式,使用下面的模板
echo -e '\033[1mYOUR_STRING\033[0m'
说明:
- echo -e – e选项意味着使用转义string
- 33 – 转义序列表示样式的开始/结束
- 小写m表示序列的结尾
- 1粗体属性
- [0m – 仅用于此会话,会话后删除所有属性的颜色和格式。
有关更多信息,还有更多样式的文本整数 – 0标准样式1粗体2暗淡4下划线5闪烁7反向8隐形