Как настроить цвета bash для вывода команды?

Например; Я запускаю ls и хочу, чтобы каталоги и файлы были другого цвета. Как мне это сделать? Я вижу, что это делают дистрибутивы, но я не могу найти никакой документации по раскрашиванию OUTPUT из других команд.

3 ответа3

5

Это не то, что делает ваша оболочка. Цвет генерируется с помощью специальных управляющих символов. Ваш эмулятор терминала должен перевести их в реальный цвет.

Для ls нужно установить

  • LSCOLORS (FreeBSD, OS X, ..) или
  • LS_COLORS (Linux).

Смотрите здесь для генератора LS_COLORS. Вы можете позвонить

  • ls --color (Linux)
  • ls -G или установить переменную окружения CLICOLOR (варианты BSD).

Остальное зависит от вашего эмулятора терминала. Например, мой iTerm2 настроен так:

1

Может быть, вы можете проверить обертку, например. cw:

cw - это ненавязчивая оболочка цвета ANSI реального времени для распространенных команд на основе unix в GNU/linux. cw предназначен для имитации среды выполняемых команд, так что если человек вводит в свою оболочку «du», «df», «ping» и т. д., он автоматически окрашивает вывод в режиме реального времени в соответствии с определением файл, содержащий желаемый формат цвета. cw поддерживает раскраску совпадений с подстановочными знаками, разметку токенов, колонтитулы, раскраску сценариев, окраску определения, зависящую от командной строки, и включает в себя более 50 готовых файлов определений.

1

Я наконец смог получить ответ на этот вопрос, который делает именно то, что я ожидаю.

Для тех, кто заинтересован в деталях; см. справочные страницы man terminfo и man termcap . Эти возможности терминала макета man-страниц и переменные среды, которые вы можете установить, позволяют настраивать цвета для любых выводимых команд.

Один из таких примеров - цветные страницы руководства:

man() {
    env LESS_TERMCAP_mb=$'\E[01;31m' \
    LESS_TERMCAP_md=$'\E[01;38;5;202m' \
    LESS_TERMCAP_me=$'\E[0m' \
    LESS_TERMCAP_se=$'\E[0m' \
    LESS_TERMCAP_so=$'\E[0;1;4;38;5;82m' \
    LESS_TERMCAP_ue=$'\E[0m' \
    LESS_TERMCAP_us=$'\E[04;38;5;51m' \
    man "$@"
}

Перечисленные выше переменные будут применены к среде man когда они будут выполнены, давая цвета на странице man . Они также могут применяться к другим командам (при условии, что они правильно используют выходные поля terminfo ).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .