我正在尝试几天来改变bash脚本中命令的颜色输出。我尝试了一些工作流程,例如trap,但没有成功。唯一部分工作的是以下代码:

#!/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") "

linux - 如何在bash脚本中着色命令输出?-LMLPHP

07-28 03:58
查看更多