我想区分我的终端中的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