在脚本中运行时如何让bash输出颜色?

Elr*_*ros 2 bash colors

我从这个问题中提取了一个示例来创建以下示例:

#!/bin/bash
export GREEN='\033[0;32m'
export RED='\033[0;31m'
export NC='\033[0m' # No Color
echo "I ${RED}love${NC} ${GREEN}Stack Overflow${NC}"
Run Code Online (Sandbox Code Playgroud)

如果我提供文件,它会按预期工作。但是,将其作为可执行文件运行会导致将控制代码打印到屏幕上,而不是更改颜色。我想我需要向 bash 发送一些标志以启用颜色,但是什么?

che*_*ner 6

此处不需要 export,确保将正确的转义字符添加到每个变量更简单,而不是进行echoprintf进行替换。

GREEN=$'\e[0;32m'
RED=$'\e[0;31m'
NC=$'\e[0m'

echo "I ${RED}love${NC} ${GREEN}Stack Overflow${NC}"
Run Code Online (Sandbox Code Playgroud)

更好的是,使用tput获取终端的正确序列,而不是假设 ANSI 转义序列。

GREEN=$(tput setaf 2)
RED=$(tput setaf 1)
NC=$(tput sgr0)
Run Code Online (Sandbox Code Playgroud)