带有背景色和前景色的 printf 语句

带有背景色和前景色的 printf 语句

我知道背景颜色代码是\033[41m,而前景颜色代码是\033[32m。我感兴趣的是制作一个代码,用于在控制台终端 printf 语句中更改背景和前景。

答案1

SGR(选择图形渲染)参数可以连接起来,用;

前任。

printf '\033[41;32m%s\033[0m\n' foobar

foobar将以背景红色(41)和前景绿色(32)进行打印。

答案2

printf '\033[32;44m'
#        ESC[ Foreground═3 + $Nr.Color Register ; Background═4 + $Nr.Color Register hold vale of color

答案3

这些代码可用于更改单个寄存器值。因此,您可以在打印输出时完全更改颜色。:

if [ "$TERM" = "linux" ]
then : # palet
echo -en "\033[?47h" # Swap_buffer
          #black     #red       #green     #Orange    #blue      #magenta   #cyan     #(S) white
echo -ne "\e]P0000000\e]P17F0000\e]P2008000\e]P3FF4600\e]P42020AF\e]P5BF00BF\e]P600CDCD\e]P7A0A0A0"
          #L black   #L red     #L green   #L yellow  #L blue    #L Cream   #S Blue    #L white
echo -ne "\e]P8404040\e]P9C41414\e]PA3CFF00\e]PBE2E200\e]PC4141FF\e]PDFFC8C8\e]PE9696FF\e]PFFFFFFF"
# get rid of artifacts
# clear
echo -en "\033[?47l" # Main_buffer
fi

答案4

使用 ANSI 转义码设置文本颜色的一般格式为:

\033[<样式>;<前景>;<背景>m

  • \033 以八进制表示的转义字符,启动 ANSI 转义序列。
  • [ 是控制序列引入器。
  • <style>、<foreground> 和 分别是代表文本样式(如粗体或下划线)、前景(文本)颜色和背景颜色的数字代码的占位符。
  • m 表示该序列是颜色/图形模式设置。

这是一个示例 bash 脚本:

#!/bin/bash

# Define color and reset
RED_TEXT="\033[0;31m"
GREEN_BG="\033[42m"
RESET="\033[0m"

# Use variables
echo -e "${RED_TEXT}${GREEN_BG}Hello, World!${RESET}"

以下是一些常见前景色和背景色的快速参考:

前景色:

Black: 30
Red: 31
Green: 32
Yellow: 33
Blue: 34
Magenta: 35
Cyan: 36
White: 37

背景颜色:

Black: 40
Red: 41
Green: 42
Yellow: 43
Blue: 44
Magenta: 45
Cyan: 46
White: 47

相关内容