我刚刚摆弄了一些 C 语言代码,一个非常基本的程序示例如下,它显然只是使用 ls 系统命令列出目录。
#include <stdio.h>
int main (void) {
system("ls -l -d */");
printf("I've just listed the directories :-)\n");
return 0;
}
这运行良好,但它以单色显示 ls 输出,而 Bash 会使用目录的颜色输出列表(如果我包含文件,则使用文件的颜色)。我怎样才能让我的 C 代码使用 bash 颜色?谢谢
答案1
ls
默认别名为:ls --color=auto
因此当ls
在支持颜色的终端中时,它会使用颜色代码。
在 bash 会话中不会发生调用system()
,因此不会评估您的别名。我也不确定自动检测会发生什么,所以我会通过热连命令使其强制彩色输出:
system("ls --color=always -l -d */");
我已经测试过了并且它有效。--color=auto
也有效并且可能更安全。
这种现象甚至可能不存在于 Csystem()
调用中。我经历过watch
与其他人有类似的问题。运行watch ls -l
后您将看不到颜色。还解释了为什么--colour=auto
它并不总是有效。