Я просто дурачился с каким-то кодом на 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? Благодаря
ls
искажается по умолчанию как: ls --color=auto
итак, когда ls
находится в терминале, который поддерживает цвет, он использует цветовые коды.
A system()
вызова не происходит на сессии удара, таким образом, Ваши псевдонимы не оценены. Я также не уверен, что произошло бы с автоматическим обнаружением, таким образом, я заставлю его вызвать цветной вывод hotwiring команда:
system("ls --color=always -l -d */");
Я протестировал это, и это работает. --color=auto
работавший также и это могло бы быть более безопасно.
Это явление может произойти даже без него находиться в C system()
звонить. Я был через подобную проблему с watch
с кем-то еще. Выполненный watch ls -l
и Вы не будете видеть цветов. Существует также объяснение на почему --colour=auto
не всегда работает.