【发布时间】:2011-02-24 20:46:03
【问题描述】:
我正在编写一个在屏幕上打印一些文本的 Bash 脚本:
echo "Some Text"
我可以格式化文本吗?我想把它加粗。
【问题讨论】:
标签: bash console formatting echo
我正在编写一个在屏幕上打印一些文本的 Bash 脚本:
echo "Some Text"
我可以格式化文本吗?我想把它加粗。
【问题讨论】:
标签: bash console formatting echo
这是一篇旧文章,但无论如何,您还可以通过利用 utf-32 获得粗体和斜体字符。甚至还有可以使用的希腊语和数学符号以及罗马字母表。
【讨论】:
为了在字符串上应用样式,您可以使用如下命令:
echo -e '\033[1mYOUR_STRING\033[0m'
解释:
-e 选项意味着将解释转义(反斜杠)字符串可能的整数是:
【讨论】:
[0m 提供的功能,这很好地解释了它
\033[0m
3 - 斜体,至少在 konsole 中
理论上是这样的:
# 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)
【讨论】:
最兼容的方式是使用tput 发现正确的序列发送到终端:
bold=$(tput bold)
normal=$(tput sgr0)
然后你可以使用变量$bold 和$normal 来格式化:
echo "this is ${bold}bold${normal} but this isn't"
给予
这是粗体,但这不是
【讨论】:
tput smul
tput 是一个很棒的命令,lots of commands 用于许多不同的任务。
read -p "this is ${bold}bold${normal} but this isn't"
$(bold),而是${bold},即大括号而不是圆括号:)
我假设 bash 运行在与 vt100 兼容的终端上,其中用户没有明确关闭对格式化的支持。
首先,使用-e 选项打开对echo 中特殊字符的支持。后来,使用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" 否则终端的以下行也将是粗体
\033,你可以使用\e,比如echo -e "\e[1msome text\e[0m"