ls系统命令不显示终端颜色

我只是在用C中的一些代码搞错,一个真正基本的程序的例子如下,显然,使用ls system命令列出目录。

#include  int main (void) { system("ls -l -d */"); printf("I've just listed the directories :-)\n"); return 0; } 

这运行正常,但它以单色显示ls输出,而Bash将使用目录的颜色(或文件,如果我包含文件)输出列表。 如何让我的C代码使用bash颜色? 谢谢

ls默认别名为: ls --color=auto所以当ls在支持颜色的终端中时,它使用颜色代码。

在bash会话中不会发生system()调用,因此不会评估别名。 我也不确定自动检测会发生什么,所以我会通过hotwiring命令强制使用colourised输出:

 system("ls --color=always -l -d */"); 

我测试了它,它的工作原理。 --color=auto工作,这可能更安全。

即使没有在C system()调用中,也会发生这种现象。 我和别人一起经历过类似的问题 。 运行watch ls -l ,你将看不到颜色。 还有一个解释为什么--colour=auto并不总是有效。

希望这对您有所帮助: http : //www.cplusplus.com/forum/unices/36461/

等等:蓝色 – \ 033 [0; 34m(“\ 033 [0; 34m”+“我的蓝色文字”)