相关疑难解决方法(0)

如何设置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

unix shell terminal

38
推荐指数
4
解决办法
2万
查看次数

如何以跨平台方式以彩色打印到控制台?

如何在Mac OS X和Linux上使用"printf"输出彩色文本?

linux macos console colors

29
推荐指数
2
解决办法
2万
查看次数

如何确定终端是否具有颜色功能?

我想更改程序以自动检测终端是否具有颜色功能,所以当我从一个不支持颜色的终端(比如(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)

这是......次优的.

unix terminal termcap terminfo

28
推荐指数
3
解决办法
6955
查看次数

标签 统计

terminal ×2

unix ×2

colors ×1

console ×1

linux ×1

macos ×1

shell ×1

termcap ×1

terminfo ×1