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

Posted

技术标签:

【中文标题】如何在 Bash 中输出粗体文本?【英文标题】:How does one output bold text in Bash? 【发布时间】:2011-02-24 20:46:03 【问题描述】:

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

echo "Some Text"

我可以格式化文本吗?我想把它加粗。

【问题讨论】:

【参考方案1】:

这是一篇旧文章,但无论如何,您还可以通过利用 utf-32 获得粗体和斜体字符。甚至还有可以使用的希腊语和数学符号以及罗马字母表。

【讨论】:

怎么样?您的意思是为特定字符串选择不同的字形吗?【参考方案2】:

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

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

解释:

echo -e - -e 选项意味着将解释转义(反斜杠)字符串 \033 - 转义序列表示样式的开始/结束 小写 m - 表示序列结束 1 - 粗体属性(见下文) [0m - 重置所有属性、颜色、格式等。

可能的整数是:

0 - 普通样式 1 - 粗体 2 - 暗淡 3 - 斜体 4 - 下划线 5 - 闪烁 7 - 反向 8 - 隐形

【讨论】:

很好的解释。正在寻找 [0m 提供的功能,这很好地解释了它 虽然应该是\033[0m 3 - 斜体,至少在 konsole 中 希望 Ubuntu 和其他一些流行平台支持删除线。 @WoodrowShigeru man terminfo【参考方案3】:

理论上是这样的:

# 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】:

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

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

然后你可以使用变量$bold$normal 来格式化:

echo "this is $boldbold$normal but this isn't"

给予

这是粗体,但这不是

【讨论】:

这很漂亮。如果我理解正确,这与插入转义符相同,但它可以在其他终端(不是 VT100)中工作。 如果你需要给文本加下划线,你可以添加一个变量。请注意,反引号已从评论格式中删除。在答案中使用相同的格式。 UNDERLINE=tput smul tput 是一个很棒的命令,lots of commands 用于许多不同的任务。 这个 tput 命令比转义字符好很多。您不需要带有 echo 的“-e”,它可以与读取的命令一起使用:read -p "this is $boldbold$normal but this isn't" @DamonHill:啊,好吧——仔细看,不是$(bold),而是$bold,即大括号而不是圆括号:)【参考方案5】:

我假设 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" 否则终端的以下行也将是粗体 这个解决方案甚至可以使用 PHP-CLI,这是相对于其他解决方案的优势。 如果你记不住\033,你可以使用\e,比如echo -e "\e[1msome text\e[0m" JS (javascript) 中允许使用八进制转义序列

以上是关于如何在 Bash 中输出粗体文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SwiftUI 的同一行中使用粗体和普通文本

如何在自动完成jQuery中制作粗体匹配文本

如何在 android 的同一个文本视图中显示粗体和普通文本?

如何在 MySQL 数据库文本字段中创建粗体数据?

如何在颤动中使用粗体、斜体等格式化程序制作文本编辑器?

sh 如何在shell脚本/ bash中将输出附加到文本文件的末尾?