Figlet 上的颜色变量!

Figlet 上的颜色变量!

当我启动时,我正在创建一个登录屏幕CLI Arch Linux我在该文件上构建了一个脚本

/etc/bash.bashrc

就像下面这样:

#COMMANDS CREATED INSIDE /ETC/BASH.BASHRC FILE
# USING ANSI COLORS
RED="\e[31m"
ORANGE="\e[33m"
BLUE="\e[94m"
GREEN="\e[92m"
STOP="\e[0m"


# LOGIN SCREEN MESSAGE 
screenfetch
printf "${GREEN}"
printf "=================================\n"
printf "${ORANGE}"
figlet -w 200 -f standard "F4NT0 ARCH LINUX"
printf "${BLUE}"
figlet -w 200 -f  small "CLI Operational System"
printf "${GREEN}"
printf "=================================\n"
printf "${STOP}"

在上面的代码中,我构建了调用颜色的变量,然后让“泄露”在使用创建的消息上菲格特程序使用打印函数

这样,我可以对消息进行着色,直到最后一个变量调用(下面的消息与我在上面的变量中调用的颜色保持一致),当我调用下一个变量时,代码会更改下一个消息的颜色,依此类推,直到停止阻止颜色泄漏的变量。

登录信

我喜欢它在我的 Arch 中的工作方式,但我发现它的可编程方式“肮脏”......

有没有一种方法可以在figlet命令中添加颜色(ANSI、tput或其他),以便更充分地在Unix/Linux中的脚本中添加颜色?

答案1

我在这个问题中展示的方式是在 Figlet 上放置颜色的最佳方式,在命令之前放置颜色的方式是我找到使其工作的唯一方法,在我调用下一个颜色后,下一行将是换新颜色!!

如果有人想知道,我调用颜色的方式是使用 ANSI 颜色代码,如下所示:

常规颜色:

  • \e[30m = 黑色
  • \e[31m = 红色
  • \e[32m = 绿色
  • \e[33m = 黄色
  • \e[34m = 蓝色
  • \e[35m = 紫色
  • \e[36m = 青色
  • \e[37m = 白色

浅色:

  • \e[90 = 浅黑色
  • \e[91 = 浅红色
  • \e[92 = 浅绿色
  • \e[93 = 浅黄色
  • \e[94 = 浅蓝色
  • \e[95 = 浅紫色
  • \e[96 = 浅青色
  • \e[97 = 浅白色

我使用的方式不是唯一的方式,甚至不是完整的方式

有关 ANSI 颜色的完整信息,请阅读此网站:

https://misc.flogisoft.com/bash/tip_colors_and_formatting

关于变量:

  • 我将颜色名称全部大写,因为这是避免混淆的最佳方法

绿色=“\e[92m”

  • 要调用创建的变量,您需要使用 ${} 结构捕获 Vaiable 的值

${绿色}

  • 要在命令之前显示颜色,您需要使用 printf 来泄漏颜色(我使用 Printf 但我认为 echo 也可以)。

printf "${绿色}"

  • 在屏幕上打印内容的下一行将具有变量的颜色。

printf "${绿色}"

Figlet -f 标准“这将是绿色的”

文本应该是这样的:

测试

  • 要阻止不应该发生的颜色泄漏,有两个步骤:
    • 如果你想添加新颜色,只需调用新颜色
    • 如果您想停止颜色,请使用以下变量:

      停止=“\e[0米”

      • 将 Stop 放在最后,之后您不想像这样更改颜色:

      printf "${停止}"

答案2

我建议使用这种模式:

RED_B='\e[1;91m'
GREEN_B='\e[1;92m'
YELLOW_B='\e[1;93m'
BLUE_B='\e[1;94m'
PURPLE_B='\e[1;95m'
CYAN_B='\e[1;96m'
WHITE_B='\e[1;97m'
RESET='\e[0m'

red() { echo -e "${RED_B}${1}${RESET}"; }
green() { echo -e "${GREEN_B}${1}${RESET}"; }
yellow() { echo -e "${YELLOW_B}${1}${RESET}"; }
blue() { echo -e "${BLUE_B}${1}${RESET}"; }
purple() { echo -e "${PURPLE_B}${1}${RESET}"; }
cyan() { echo -e "${CYAN_B}${1}${RESET}"; }
white() { echo -e "${WHITE_B}${1}${RESET}"; }

然后,您可以将Figlet命令作为参数传递给颜色函数:

bash-5.0# green "$(figlet -f big "Hello!")"

在此输入图像描述

相关内容