当我启动时,我正在创建一个登录屏幕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!")"