unix – 如何设置STDOUT和STDERR的字体颜色

前端之家收集整理的这篇文章主要介绍了unix – 如何设置STDOUT和STDERR的字体颜色前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想区分我的终端中的STDOUT和STDERR消息。
如果脚本或命令正在终端中打印消息,我想按颜色区分;可能吗?

(例如,stderr字体颜色为红色,stdout字体颜色为蓝色)。

示例(使用粗体):

$date
Wed Jul 27 12:36:50 IST 2011

$datee
bash: datee: command not found

$alias ls
alias ls='ls --color=auto -F'

$aliass ls
bash: aliass: command not found

这是一个我想到的黑客,它似乎工作:

给定以下可读性别名:

alias blue='echo -en "\033[36m"'
alias red='echo -en "\033[31m"'
alias formatOutput='while read line; do blue; echo $line; red; done'

现在,您需要首先将终端中的字体颜色设置为红色(作为默认值,将用于stderr)。
然后,运行命令并通过上面定义的formatOutput(将每行打印为蓝色,然后将字体颜色重置为红色)管道stdout:

shell$ red
shell$ ls / somenonexistingfile | formatOutput

上面的命令将打印stderr和stdout,你会看到线条的颜色不同。

希望这可以帮助

更新:

为了使这个可重用,我把它放在一个小脚本:

$ cat bin/run 
#!/bin/bash
echo -en "\033[31m"  ## red
eval $* | while read line; do
    echo -en "\033[36m"  ## blue
    echo $line
    echo -en "\033[31m"  ## red
done
echo -en "\033[0m"  ## reset color

现在你可以使用任何命令:

$ run yourCommand

猜你在找的Bash相关文章