LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 4105|回复: 21

控制台下编程如何使用颜色

[复制链接]
发表于 2003-5-24 14:49:30 | 显示全部楼层 |阅读模式
就象ls --color=auto,应该不是用curses吧。
给个提示就行。
发表于 2003-5-24 17:44:10 | 显示全部楼层
不使用curses就只能使用图形库了。似乎没有什么别的办法。
发表于 2003-5-24 18:38:52 | 显示全部楼层
VT100命令串也可以实现

查找一下VT100的文档
发表于 2003-5-26 09:05:46 | 显示全部楼层
好象 echo \[\033[01;32m\] 这样的命令就把颜色变成绿的了
发表于 2003-5-26 11:43:49 | 显示全部楼层
最初由 viper 发表
好象 echo \[\033[01;32m\] 这样的命令就把颜色变成绿的了

这种办法是可行的,但属于shell编程的内容。
发表于 2003-5-26 12:34:45 | 显示全部楼层
上面那个echo输出内容就是vt100字符串
发表于 2003-5-26 17:32:32 | 显示全部楼层

  1. #include <unistd.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <ncurses.h>

  5. int main(){
  6.   int i;

  7.   initscr();

  8.   if (!has_colors()){
  9.     endwin();
  10.     fprintf(stderr, "Error - no color support on this terminal\n");
  11.     exit(1);
  12.   }

  13.   if (start_color() != OK){
  14.     endwin();
  15.     fprintf(stderr, "Error - could not initialize colors\n");
  16.     exit(2);
  17.   }

  18.   clear();
  19.   mvprintw(5, 5, "There are %d COLORS, and %d COLOR_PAIRS available", COLORS, COLOR_PAIRS);
  20.   refresh();

  21.   init_pair(1, COLOR_RED, COLOR_BLACK);
  22.   init_pair(2, COLOR_RED, COLOR_BLACK);
  23.   init_pair(3, COLOR_RED, COLOR_BLACK);
  24.   init_pair(4, COLOR_RED, COLOR_BLACK);
  25.   init_pair(5, COLOR_RED, COLOR_BLACK);
  26.   init_pair(6, COLOR_RED, COLOR_BLACK);
  27.   init_pair(7, COLOR_RED, COLOR_BLACK);

  28.   for (i = 1; i <= 7; i++){
  29.     attroff(A_BOLD);
  30.     attrset(COLOR_PAIR(i));
  31.     mvprintw(5 + i, 5, "Color pair %d", i);
  32.     attrset(COLOR_PAIR(i) | A_BOLD);
  33.     mvprintw(5 + i, 30, "Bold color pair %d", i);
  34.     refresh();
  35.     sleep(1);
  36.   }

  37.   getch();
  38.   endwin();
  39.   return(EXIT_SUCCESS);
  40. }
复制代码
发表于 2003-5-26 17:35:56 | 显示全部楼层
编译我上面的代码,在27-33行直接把颜色改成你喜欢的颜色就可以了,我懒得填进去了。具体有哪些颜色可填写可以参照/usr/include/ncurses.h

编译的时候可能需要加入库的名字。
用这条命令编译吧:

  1. gcc -o sample sample.c -L/usr/lib -lncurses
复制代码
发表于 2003-5-26 18:08:41 | 显示全部楼层
Sworder兄这段程序是从什么地方搞来的吧。我看着怎么和书上的几乎一模一样呢? 不过程序很好地表现了curses的用法,还是加精吧。
 楼主| 发表于 2003-5-26 18:51:34 | 显示全部楼层
我是说象ls --color=auto一样在控制台下显示颜色,curses要initscr,调用以后就清屏了,和ls之类的不一样,viper和无双版主说的应该可行,原来在DOS下就用的ansi.h的\033[之类的,不过我用了
echo \[\033[01;32m\]怎么不顶用,显示
[033[01
bash: 32m]: command not found
用echo "\[\033[01;32m\]"
echo -e \[\033[01;32m\]都不行
现在正在查。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表