加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 09:17:43 所属栏目:安全 来源:网络整理
导读:我想区分我的终端中的STDOUT和STDERR消息。 如果脚本或命令正在终端中打印消息,我想按颜色区分;可能吗? (例如,stderr字体颜色为红色,stdout字体颜色为蓝色)。 示例(使用粗体): $date Wed Jul 27 12:36:50 IST 2011 $datee bash: datee: command not fou
我想区分我的终端中的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 "33[36m"'
alias red='echo -en "33[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 "33[31m"  ## red
eval $* | while read line; do
    echo -en "33[36m"  ## blue
    echo $line
    echo -en "33[31m"  ## red
done
echo -en "33[0m"  ## reset color

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

$ run yourCommand

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读