linux - 如何在 bash 脚本中为命令输出着色?
问题描述
我正在尝试几天来更改 bash 脚本中命令的颜色输出。我尝试了一些工作流程,例如陷阱但没有成功。唯一部分工作的是这段代码:
#!/bin/bash
GRN='\e[32m'
CYN='\e[36m'
END='\e[0m'
echo -e "${GRN}Formating Root partition ..${END}"
echo -e "${CYN}"
(set -x ; mkfs.ext4 -L Root -m 5 /dev/sda2) | GREP_COLOR='49;38;5;007' grep --color=always '.*'
echo -e "${END}"
echo -e "${GRN}Formating Home partition ..${END}"
...
有没有更好的方法来做到这一点。谢谢你。
我想要的是这样的:
Formating Root partition .. <= Green
mkfs.ext4 -L Root -m 5 /dev/sda2 <= Cyan
mke2fs 1.45.2 (27-May-2019) <= Grey
Creating filesystem with 9175040 4k blocks and 2293760 inodes <= Grey
Filesystem UUID: ... <= Grey
... <= Grey
Formating Home partition .. <= Green
解决方案
您可以使用以下脚本,在 mac 和 ubuntu 上进行了测试。
每个函数接受两个参数,
- 例如,用于示例字符串输出
green "will print green"
- 例如打印命令输出
red "will print Free space in red:" "free -m" free -m
bash 脚本
#!/bin/bash
set +x
function black(){
echo -e "\x1B[30m $1 \x1B[0m"
if [ ! -z "${2}" ]; then
echo -e "\x1B[30m $($2) \x1B[0m"
fi
}
function red(){
echo -e "\x1B[31m $1 \x1B[0m"
if [ ! -z "${2}" ]; then
echo -e "\x1B[31m $($2) \x1B[0m"
fi
}
function green(){
echo -e "\x1B[32m $1 \x1B[0m"
if [ ! -z "${2}" ]; then
echo -e "\x1B[32m $($2) \x1B[0m"
fi
}
function yellow(){
echo -e "\x1B[33m $1 \x1B[0m"
if [ ! -z "${2}" ]; then
echo -e "\x1B[33m $($2) \x1B[0m"
fi
}
function blue(){
echo -e "\x1B[34m $1 \x1B[0m"
if [ ! -z "${2}" ]; then
echo -e "\x1B[34m $($2) \x1B[0m"
fi
}
function purple(){
echo -e "\x1B[35m $1 \x1B[0m \c"
if [ ! -z "${2}" ]; then
echo -e "\x1B[35m $($2) \x1B[0m"
fi
}
function cyan(){
echo -e "\x1B[36m $1 \x1B[0m"
if [ ! -z "${2}" ]; then
echo -e "\x1B[36m $($2) \x1B[0m"
fi
}
function white(){
echo -e "\x1B[37m $1 \x1B[0m"
if [ ! -z "${2}" ]; then
echo -e "\x1B[33m $($2) \x1B[0m"
fi
}
green "Green: Formating Root partition .."
white "White: Formating Root partition .."
# pass the second parameter, will be treated as command
yellow "color command output,print ls:" "ls"
red "Red: System Free RAM:" "free -m"
cyan "cyan: awesome..........end..................."
echo -e "mix the color $(purple "Purple: this is purple, will print disk usage" "du -h") Now Yellow: $(yellow "hi Yelow") "
推荐阅读
- ios - 在 Xamarin iOS 的单页中强制横向模式?
- python - numpy数组中负数的立方根返回nan
- javascript - 按日期(年份)Vue.js 分组数据
- android - 更新片段中的值而不重新创建它
- google-bigquery - BigQuery 选择期望双嵌套列
- java - 如果 level="info" 在 log4j2 中避免写入错误消息
- node.js - 在使用 Nodemon 重新启动 node.js (express) 服务器之前构建
- api - 我应该在 .NET Core API 中有视图吗
- selenium - .NET Core Selenium WebDriver 未找到
- c# - VisualStudio 2017 - 总是显示异常