figlet 上的颜色变量!

F4N*_*NT0 6 colors shell-script

当我启动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}"
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我构建了调用颜色的变量,并让使用printffiglet 程序创建的消息“泄漏”

通过这种方式,我可以为消息着色直到最后一个变量调用(下面的消息保持我在上面变量中调用的颜色),当我调用下一个变量时,代码会更改下一条消息的颜色,依此类推,直到STOP阻止颜色泄漏的变量。

登录信

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

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

F4N*_*NT0 5

我在这个问题中显示的方式是在 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

关于变量:

  • 我将颜色名称全部放在 Caps 中,因为这是避免混淆的最佳方法

绿色="\e[92m"

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

${绿色}

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

printf "${GREEN}"

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

printf "${GREEN}"

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

文本应该是这样的:

测试

  • 要阻止内部不应出现的颜色泄漏,有两个步骤:
    • 如果要添加新颜色,只需调用新颜色
    • 如果要停止颜色,请使用以下变量:

      停止="\e[0m"

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

      printf "${STOP}"