Shell脚本中教你打印彩色背景、字体

字体颜色

在 Unix/Linux 系统中,echo 命令可以配合 ANSI 转义序列来显示不同颜色的字体。ANSI 转义序列是一组控制字符,用于在终端中设置文本样式和颜色。

以下是一个基本的示例,展示如何使用echo命令来显示不同颜色的文本:

#!/bin/bash
 
# 定义颜色代码
BLACK='\033[0;30m'       # 黑色
RED='\033[0;31m'         # 红色
GREEN='\033[0;32m'       # 绿色
YELLOW='\033[0;33m'      # 黄色
BLUE='\033[0;34m'        # 蓝色
MAGENTA='\033[0;35m'     # 品红
CYAN='\033[0;36m'        # 青色
WHITE='\033[0;37m'       # 白色
NC='\033[0m'             # 颜色重置
 
# 使用颜色代码打印文本
echo -e "${RED}这是红色文本${NC}"
echo -e "${GREEN}这是绿色文本${NC}"
echo -e "${YELLOW}这是黄色文本${NC}"
echo -e "${BLUE}这是蓝色文本${NC}"
echo -e "${MAGENTA}这是品红色文本${NC}"
echo -e "${CYAN}这是青色文本${NC}"
echo -e "${WHITE}这是白色文本${NC}"
echo -e "${BLACK}这是黑色文本${NC}"

在这个脚本中:RED、GREEN都存储了一个 ANSI 转义序列,用于设置终端中文本的颜色。
2. 变量存储了一个用于重置颜色的 ANSI 转义序列。
3. 命令用于解释字符串中的转义序列。

运行这个脚本时,你会看到不同颜色的文本输出到终端中。

注意事项

  1. 并不是所有的终端都支持 ANSI 转义序列。大多数现代终端(如 GNOME Terminal、Konsole、xterm 等)都支持,但一些旧的或特定的终端可能不支持。
  2. 如果你将输出重定向到文件而不是终端,颜色信息将不会保留在文件中。

背景颜色

在 Unix/Linux 终端中,除了可以设置文本颜色外,还可以设置文本的底色(背景色)。这同样是通过 ANSI 转义序列来实现的。以下是如何使用echo命令结合 ANSI 转义序列来设置不同底色的示例:

#!/bin/bash
 
# 定义底色代码
BLACK_BG='\033[40m'       # 黑色背景
RED_BG='\033[41m'         # 红色背景
GREEN_BG='\033[42m'       # 绿色背景
YELLOW_BG='\033[43m'      # 黄色背景
BLUE_BG='\033[44m'        # 蓝色背景
MAGENTA_BG='\033[45m'     # 品红背景
CYAN_BG='\033[46m'        # 青色背景
WHITE_BG='\033[47m'       # 白色背景
NC='\033[0m'              # 颜色重置(包括文本色和背景色)
 
# 定义一些文本颜色代码(可选)
TEXT_RESET='\033[39m'     # 重置文本颜色到默认
 
# 使用底色代码打印文本
echo -e "${RED_BG}${TEXT_RESET}这是红色背景文本${NC}"
echo -e "${GREEN_BG}${TEXT_RESET}这是绿色背景文本${NC}"
echo -e "${YELLOW_BG}${TEXT_RESET}这是黄色背景文本${NC}"
echo -e "${BLUE_BG}${TEXT_RESET}这是蓝色背景文本${NC}"
echo -e "${MAGENTA_BG}${TEXT_RESET}这是品红色背景文本${NC}"
echo -e "${CYAN_BG}${TEXT_RESET}这是青色背景文本${NC}"
echo -e "${WHITE_BG}${TEXT_RESET}这是白色背景文本${NC}"
echo -e "${BLACK_BG}${TEXT_RESET}这是黑色背景文本(可能看不清,因为默认文本色是黑色)${NC}"
 
# 示例:设置文本和背景颜色
echo -e "${RED_BG}${YELLOW}这是红色背景黄色文本${NC}"

在这个脚本中:

  • 底色代码(如RED_BG、GREEN_BG等)使用\033[4Xm格式,其中X是背景色的数字代码(0=黑色, 1=红色, 2=绿色, 3=黄色, 4=蓝色, 5=品红, 6=青色, 7=白色)。
  • NC 变量用于重置所有颜色设置,包括文本色和背景色。
  • TEXT_RESET变量用于仅重置文本颜色到默认(通常是黑色,但取决于终端配置)。
  • 在打印文本时,先设置背景色,然后(可选地)设置文本色,最后使用${NC}来重置所有颜色设置。

请注意,当使用黑色背景时,如果文本颜色也是默认的黑色(或深色),则文本可能看不清。因此,在黑色背景上打印时,最好选择一个浅色文本颜色。

运行这个脚本,你将看到带有不同底色的文本输出到终端中。

结合

要将文本颜色和背景色结合起来,比如设置为白底黄色字体,你可以简单地在echo命令的字符串中按顺序放置相应的 ANSI 转义序列。以下是一个具体的示例:

#!/bin/bash
 
# 定义颜色代码
YELLOW='\033[33m'         # 黄色文本
WHITE_BG='\033[47m'       # 白色背景
NC='\033[0m'              # 颜色重置

function success() {
  echo -e "$WHITE_BG$YELLOW$1$NC"
}
 
# 使用颜色代码打印文本
  success "这是白底黄色字体"

在这个脚本中:

  • YELLOW 变量设置了文本颜色为黄色。
  • WHITE_BG 变量设置了背景色为白色。
  • `NC 变量用于在输出后重置所有颜色设置,以确保后续的输出不会受到颜色设置的影响。

当你运行这个脚本时,终端将显示一段白底黄色字体的文本。

记住,ANSI 转义序列的顺序很重要。在这个例子中,我们首先设置了背景色( W H I T E B G ),然后设置了文本色( {WHITE_BG}),然后设置了文本色( WHITEBG),然后设置了文本色({YELLOW}),最后输出文本并重置颜色(${NC})。这个顺序确保了在你想要的背景色上正确地显示文本色。

成功、错误提示常用类型

第一种写法

#!/bin/bash
  
RED_BG='\033[41m'
YELLOW='\033[33m'
NC='\033[0m'

function Failed() {
        echo -e "$RED_BG$1$NC"
}

function Info() {
        echo -e "$YELLOW$1$NC"
}

        Info "这个是输出成功提示!(黄色字体)"
        Failed "这个是输出错误提示!(红底)"

第二种写法(糅合)

#!/bin/bash
  
function Failed() {
        echo -e "\033[41m$1\033[0m"
}

function Info() {
        echo -e "\033[33m$1\033[0m"
}

        Info "这个是输出成功提示!(黄色字体)"
        Failed "这个是输出错误提示!(红底)"

Shell脚本中教你打印彩色背景、字体_第1张图片

你可能感兴趣的:(运维,linux)