我希望能够跟踪服务器日志文件的输出,该文件包含以下消息:
INFO
SEVERE
Run Code Online (Sandbox Code Playgroud)
等,如果是SEVERE,则以红色显示该行;如果是INFO,则为绿色。我可以为tail帮助我执行此操作的命令设置什么样的别名?
当我从打印彩色输出(例如ls或gcc)的终端执行命令时,将打印彩色输出。根据我的理解,该过程实际上是在输出ANSI 转义码,并且终端格式化颜色。
但是,如果我由另一个进程(比如自定义 C 应用程序)执行相同的命令并将输出重定向到应用程序自己的输出,这些颜色不会持续存在。
程序如何决定是否输出彩色格式的文本?是否有一些环境变量?
我写了一个小 Bash 脚本,spfquery用于检查我的域电子邮件 SPF 记录,如果它传递所有提供商的 IP 地址:
#!/bin/bash
# RED="\033[1;31m"
GREEN="\033[1;32m"
NOCOLOR="\033[0m"
email="[my email address]" # deleted for bots not to hound me
declare -a ips=("88.86.120.212" "88.86.120.223" "88.86.120.250" "88.86.120.213" "88.86.120.103" "46.234.104.23" "46.234.104.24")
echo -e "\n\n"
for ip in "${ips[@]}"
do
echo -e "${GREEN}$ip${NOCOLOR}"
spfquery -sender $email -ip $ip -helo kolbaba.stable.cz
echo -e "\n\n"
done
Run Code Online (Sandbox Code Playgroud)
注意,有RED注释掉。那是因为我希望生成的消息以以下任何一个开头:
failsoftfailneutralunknownerrornone即不与:
pass以红色着色。
但如何做到这一点对我来说是个谜?
colors ×3
alias ×1
command-line ×1
highlighting ×1
process ×1
shell ×1
shell-script ×1
tail ×1
terminal ×1