如何在控制台中使用ANSI转义序列将文本格式设置为斜体或粗体?

11

我该如何使用 ANSI 转义格式化文本?

例如,使文字 斜体粗体,或添加删除线和上标。


2个回答

22

如何使用 ANSI 终端转义代码进行格式化,如斜体或粗体?

粗体:使用 ESC[1m

不支持斜体、删除线和上标。

某些终端支持其他序列。例如,在 Gnome 终端中,您可以使用:

echo -e "\e[1mbold\e[0m"
echo -e "\e[3mitalic\e[0m"
echo -e "\e[4munderline\e[0m"
echo -e "\e[9mstrikethrough\e[0m"
echo -e "\e[31mHello World\e[0m"
echo -e "\x1B[31mHello World\e[0m"

输入图片描述

来源:如何在Gnome终端中使用下划线、加粗、斜体、删除线、颜色、背景和大小?,答案来自Sylvain Pineau


进一步阅读


有没有任何方法可以使用RGB? - jepjep40
@jepjep40 不能使用 ANSI 转义序列。 - DavidPostill
1
@jepjep40 是的,请搜索“真正的24位颜色”。 - HappyFace
1
实际上你可以:https://dev59.com/em445IYBdhLWcg3wdqOO#33206814 - xeruf
1
@xeruf 当我写下我的答案时,你还不能这样做(指2016年)。 - DavidPostill

0
斜体、删除线和上标不受支持。
不是在这里。我编写了以下脚本并在以下环境中进行了测试:
- macOS 上的 iTerm2(zsh) - macOS 上的 Terminal(zsh) - Windows 11 上的 Git Bash - Ubuntu、Mint 上的 GNOME Terminal(bash) - FreeBSD 13 上的 Konsole(bash)
它们都可以正常工作,但我没有看到任何关于“上标”的参考。那个转义码是什么?
无论如何,我将这个脚本放在网上供任何人尝试:esctest.sh。(别忘了先执行 chmod +x
附注:你可以互换使用 \x1b\033\e 来表示 ESC。
#!/bin/bash

_esc_seq="\x1b["
_esc_end="${_esc_seq}0m"

# $1: escape code
# $2: message
print_test_style() {
    echo -e "\t${_esc_seq}${1}m${2}${_esc_end}\n"
}

declare -a _style_codes=(
    ["1"]="bold"
    ["2"]="dim"
    ["3"]="emphasis"
    ["4"]="underline"
    ["9"]="strikethrough"
)

echo -e "Testing styles...\n"

for key in "${!_style_codes[@]}"; do
    print_test_style "${key}" "${_style_codes[$key]}"
done

sample of iTerm2 running this script


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接