Как я могу проверить наличие цвета в моей Linux-коробке?

Я хочу сделать что-то подобное в моей linux-боксе:

if [[ colors exist ]];then echo "some text in colors" fi 

мои сомнения:

  • avahi-daemon удаляет IP-адрес из моего сетевого интерфейса
  • Можно ли заблокировать неправильные бит в ОЗУ на Linux?
  • Есть ли простая команда для вывода столбцов с разделителями табуляции?
  • Как изменить цвет фона приложений curses?
  • Как Linux управляет шрифтами?
  • Пакетное удаление информации exif
  • Я использую sed, чтобы поместить цвета в файл журнала для некоторого текста, но если в поле linux нет цветов, то он будет модифицировать файл журнала не так просто, как положить ненужные символы, такие как [033m и т. д.

  • Изменение скейффов,
  • Проблема раскладки клавиатуры при загрузке с LUKS
  • Найти варианты свопинга, которые в настоящее время используются
  • У всех устройств под Linux есть узел устройства?
  • Компиляция GNU / Linux с оптимизацией -O3
  • `stat -f` показывает тип файловой системы ext4 как ext2 / ext3
  • 3 Solutions collect form web for “Как я могу проверить наличие цвета в моей Linux-коробке?”

    Возможно, с помощью tput проверьте количество цветов,

     ncolors=$(tput colors) if [[ $ncolors -ge 8 ]];then # colors available fi 

    Цвета tty являются характеристикой терминала, на котором отображается текст. Почти все терминалы сегодня обрабатывают escape-последовательность ANSI, поэтому вы можете уйти с раскрашиванием текста при сгенерировании, но вы действительно должны это делать, когда он написан (возможно, под контролем пользователя на конце записи). Например, настроить собственный цвет для вашего текста для вашего пейджера).

    Возможный метод определения того, выполняете ли вы прямо из эмулятора терминала или, если файл записывается в файл журнала, должен использовать readlink :

     if [[ $(readlink -f /dev/stdout) =~ '^/dev/pts/' ]]; then # colors available fi 

    Обычно это должно работать на современных Linux с udev и procfs. Я не уверен, что существует нечто более портативное. Это использует специальный оператор регулярного выражения bash =~ , поэтому он будет работать только с bash.

    Альтернатива, как уже объяснялось ранее, использовать tty >/dev/null ; в вашем случае, однако, вас может интересовать только стандартный вывод, а не стандартный ввод, поэтому вы хотите сделать свой стандартный вывод стандартным вводом tty :

     if tty <&1 >/dev/null; then # colors available fi 

    Это приведет к отключению цветов при запуске ./myscript.sh >>log_file , но включите их при запуске ./myscript.sh .

    Я бы рекомендовал использовать [[ $(tput colors) -ge 8 ]] , так что, когда переменная окружения TERM установлена ​​в dumb , цвета не будут выводиться.

    Если вы пишете файл журнала с цветами в нем, вы все равно можете его прочитать; вам придется использовать что-то вроде less -r или multitail -cT ansi из эмулятора терминала с поддержкой цвета.

    Linux и Unix - лучшая ОС в мире.