我正在编写一个Bash脚本,可以在屏幕上打印一些文字:
echo "Some Text"
我可以格式化文字吗?我想大胆一点。
答案 0 :(得分:366)
最兼容的方法是使用tput
发现要发送到终端的正确序列:
bold=$(tput bold)
normal=$(tput sgr0)
然后您可以使用变量$bold
和$normal
来格式化:
echo "this is ${bold}bold${normal} but this isn't"
给出
这是粗体,但这不是
答案 1 :(得分:41)
我认为bash在兼容vt100的终端上运行,用户没有明确关闭对格式化的支持。
首先,使用echo
选项启用对-e
中特殊字符的支持。稍后,使用ansi转义序列ESC[1m
,如:
echo -e "\033[1mSome Text"
有关ansi转义序列的更多信息,例如:ascii-table.com/ansi-escape-sequences-vt-100.php
答案 2 :(得分:36)
要在字符串上应用样式,可以使用如下命令:
echo -e '\033[1mYOUR_STRING\033[0m'
说明:
-e
选项表示将解释转义(反向)字符串可能的整数是:
答案 3 :(得分:12)
理论上是这样的:
# 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)
答案 4 :(得分:0)
这是一个旧帖子,但是无论如何,您也可以利用utf-32获得黑体和斜体字符。甚至还有希腊和数学符号以及罗马字母。