How does one output bold text in Bash?
我正在写一个bash脚本,它将一些文本打印到屏幕上:
1 | echo"Some Text" |
我可以格式化文本吗?我想大胆点。
最兼容的方法是使用
1 2 | bold=$(tput bold) normal=$(tput sgr0) |
然后您可以使用变量
1 | echo"this is ${bold}bold${normal} but this isn't" |
给予
this is bold but this isn't
我假设bash运行在与vt100兼容的终端上,在该终端中,用户没有显式地关闭对格式的支持。
首先,使用
1 | echo -e"\033[1mSome Text" |
关于ansi转义序列的更多信息,例如:ascii-table.com/ansi-escape-sequences-vt-100.php
为了在字符串上应用样式,可以使用如下命令:
1 | echo -e '\033[1mYOUR_STRING\033[0m' |
说明:
- echo-e-
-e 选项意味着将解释转义(反斜杠)字符串 - 033-转义序列表示样式的开始/结束
- 小写M-表示序列的结尾
- 1-粗体属性(见下文了解更多信息)
- [0M-重置所有属性、颜色、格式等。
可能的整数是:
- 0-普通样式
- 1 - Bold
- 2暗淡
- 4下划线
- 5眨眼
- 7 -反向
- 8隐形
理论上是这样的:
1 2 3 4 5 6 7 8 9 10 11 12 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)