我想区分终端中的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
如何在Mac OS X和Linux上使用"printf"输出彩色文本?
我想更改程序以自动检测终端是否具有颜色功能,所以当我从一个不支持颜色的终端(比如(X)Emacs中的Mx shell)中运行所述程序时,颜色会自动关闭.
我不想硬编码程序来检测TERM = {emacs,dumb}.
我认为termcap/terminfo应该可以帮助解决这个问题,但到目前为止,我只是设法将这个(n)curses - 使用代码片段拼凑在一起,当它无法找到终端时会严重失败:
#include <stdlib.h>
#include <curses.h>
int main(void) {
int colors=0;
initscr();
start_color();
colors=has_colors() ? 1 : 0;
endwin();
printf(colors ? "YES\n" : "NO\n");
exit(0);
}
Run Code Online (Sandbox Code Playgroud)
即我明白了:
$ gcc -Wall -lncurses -o hep hep.c
$ echo $TERM
xterm
$ ./hep
YES
$ export TERM=dumb
$ ./hep
NO
$ export TERM=emacs
$ ./hep
Error opening terminal: emacs.
$
Run Code Online (Sandbox Code Playgroud)
这是......次优的.