概述
在 Linux 命令行终端或 Bash Shell 脚本中适当使用颜色,能够让第一时间感觉到您的命令或脚本执行过程中差异。本文主要介绍使用 echo 输出带颜色的字体。
echo
带参数输出字符串
当 echo
命令带 -e
参数时,可以使用反斜杠 \
输出特殊的字符。
linux 终端下输出带颜色的文字只需在文字前面添加如下格式
\033[显示方式;前景色;背景色m
TIPS:
其中\033
(ESC 键的八进制)引导非常规字符序列。m
意味着设置属性然后结束非常规字符序列。
\033[
即告诉终端后面是设置颜色的参数,显示方式,前景色,背景色均是数字
参数含义
显示方式 | 意义 |
---|---|
0 | 终端默认设置 |
1 | 高亮显示 |
4 | 使用下划线 |
5 | 闪烁 |
7 | 反白显示 |
8 | 不可见 |
前景色 | 背景色 | 颜色 |
---|---|---|
30 | 40 | 黑色 |
31 | 41 | 红色 |
32 | 42 | 绿色 |
33 | 43 | 黄色 |
34 | 44 | 蓝色 |
35 | 45 | 紫红色 |
36 | 46 | 青蓝色 |
37 | 47 | 白色 |
示例(日志颜色控制)
当我们编写 Shell 脚本时,需要将日志信息保存起来,我们也可以使用 echo 命令输出带颜色的字体,方便查看日志信息。
如,我们将以下代码加入到 ~/.bash_log
文件中,并重新加载,使其生效。
#################################################
# Get now date string.
# 当前日期字符串
#################################################
function now_date() {
format=$1
if [[ "${format}" ]]; then
now=$(date +"${format}")
else
now=$(date +"%Y%m%d_%H%M%S")
fi
echo "${now}"
}
#################################################
# Basic log function.
# 基本日志,输出时间戳
# ex: [2021/08/15 19:16:10]
#################################################
function echo_log() {
now=$(date +"[%Y/%m/%d %H:%M:%S]")
echo -e "\033[1;$1m${now}$2\033[0m"
}
#################################################
# Debug log message.
# 调试日志,黑色
#################################################
function msg_debug() {
echo_log 30 "[Debug] ====> $*"
}
#################################################
# Error log message.
# 异常日志,红色
#################################################
function msg_error() {
echo_log 31 "[Error] ====> $*"
}
#################################################
# Success log message.
# 成功日志,绿色
#################################################
function msg_success() {
echo_log 32 "[Success] ====> $*"
}
#################################################
# Warning log message.
# 警告日志,黄色
#################################################
function msg_warn() {
echo_log 33 "[Warning] ====> $*"
}
#################################################
# Information log message.
# 一般消息日志,蓝色
#################################################
function msg_info() {
echo_log 34 "[Info] ====> $*"
}
然后,在命令行就可以打印不同样式的消息了。
[meizhaohui@hellogitlab ~]$ msg_debug 'debug message'
[2021/08/21 12:35:45][Debug] ====> debug message
[meizhaohui@hellogitlab ~]$ msg_info "info message"
[2021/08/21 12:35:47][Info] ====> info message
[meizhaohui@hellogitlab ~]$ msg_warn 'warn message'
[2021/08/21 12:35:58][Warning] ====> warn message
[meizhaohui@hellogitlab ~]$ msg_error 'error message'
[2021/08/21 12:36:16][Error] ====> error message
[meizhaohui@hellogitlab ~]$ msg_success 'success message'
[2021/08/21 12:36:25][Success] ====> success message
实际效果如下:
可以看到,这种效果非常漂亮。后面我们可以把相应的消息写入到日志文件中,后期查看日志文件内容时,也可以看到有颜色的日志信息。
请看以下示例:
[meizhaohui@hellogitlab ~]$ msg_info "info message" >> log.txt
[meizhaohui@hellogitlab ~]$ msg_warn 'warn message' >> log.txt
[meizhaohui@hellogitlab ~]$ msg_success 'success message' >> log.txt
[meizhaohui@hellogitlab ~]$ cat log.txt
[2021/08/21 12:40:14][Info] ====> info message
[2021/08/21 12:40:27][Warning] ====> warn message
[2021/08/21 12:40:37][Success] ====> success message
[meizhaohui@hellogitlab ~]$
效果如下:
评论区