Системная команда ls не отображает цвета терминала

Я просто дурачился с каким-то кодом на 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? Благодаря

2
задан 1 June 2014 в 17:38

1 ответ

ls искажается по умолчанию как: ls --color=auto итак, когда ls находится в терминале, который поддерживает цвет, он использует цветовые коды.

A system() вызова не происходит на сессии удара, таким образом, Ваши псевдонимы не оценены. Я также не уверен, что произошло бы с автоматическим обнаружением, таким образом, я заставлю его вызвать цветной вывод hotwiring команда:

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

Я протестировал это, и это работает. --color=auto работавший также и это могло бы быть более безопасно.

Это явление может произойти даже без него находиться в C system() звонить. Я был через подобную проблему с watch с кем-то еще. Выполненный watch ls -l и Вы не будете видеть цветов. Существует также объяснение на почему --colour=auto не всегда работает.

8
ответ дан 1 June 2014 в 17:38

Другие вопросы по тегам:

Похожие вопросы: