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

问题描述 投票:0回答:4

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

echo "Some Text"

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

bash console formatting echo
4个回答
585
投票

最兼容的方法是使用

tput
来发现发送到终端的正确序列:

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

然后您可以使用变量

$bold
$normal
来格式化内容:

echo "this is ${bold}bold${normal} but this isn't"

给予

这是大胆,但这不是


201
投票

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

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

说明:

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

可能的整数是:

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

所有这些均符合 ANSI,但由绝大多数终端仿真器实现。设置输出样式的另一种方法是通过使用 tput 命令来依赖

terminfo
。后者很可能会输出 ANSI 的转义序列,除非您使用的是非常晦涩和/或奇特类型的终端。


54
投票

我假设 bash 正在 vt100 兼容终端上运行,其中用户没有明确关闭对格式化的支持。

首先,使用

echo
选项打开对
-e
中特殊字符的支持。稍后,使用 ansi 转义序列
ESC[1m
,例如:

echo -e "\033[1mSome Text"

有关 ansi 转义序列的更多信息,例如:ascii-table.com/ansi-escape-sequences-vt-100.php


24
投票

理论上是这样的:

# 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

© www.soinside.com 2019 - 2024. All rights reserved.