CLICOLOR и LS_COLORS в bash

48

У меня есть следующая настройка в .bashrc для раскраски листингов.

экспорт CLICOLOR = 1
export LS_COLORS = 'no = 00: fi = 00: di = 00; 34: ln = 01; 36: pi = 40; 33: so = 01; 35: do = 01; 35: bd = 40; 33; 01: кд = 40; 33; 01: или = 40; 31; 01: ех = 01; 32: * дегтя = 01; 31:. * TGZ = 01; 31:. * ARJ = 01; 31:.. * Таз = 01; 31: * LZH = 01; 31:.. * застежка-молния = 01; 31:. * г = 01; 31:. * Z = 01; 31: * GZ = 01; 31:. * BZ2 = 01;. . 31: * Deb = 01; 31:. * мин = 01; 31:. * баночка = 01; 31: * JPG = 01; 35:. * JPEG = 01; 35:. * GIF = 01; 35.: * .bmp = 01; 35:. * PBM = 01; 35:. * = 01 МПГ; 35:. * пая = 01; 35: * TGA = 01; 35:. * XBM = 01; 35:. *. XPM = 01; 35: * TIF = 01; 35:. * TIFF = 01; 35:. * PNG = 01; 35:. * мов = 01; 35:. * миль на галлон = 01; 35:.. * MPEG = 01; 35: * AVI = 01; 35:. * FLI = 01; 35:. * гл = 01; 35:. * дл = 01; 35:. * XCF = 01; 35:. * XWD = 01;. 35: * = 01 OGG; 35:.. * mp3 = 01; 35: * .WAV = 01; 35:. ';

Этот сайт показывает код для цветов, и я хочу изменить цвет каталога на «светлый цвет». Но выполнение di следующим образом не влияет на это.

ди = 04; 94

Интересно то, что даже после того, как я закомментировал LS_COLORS, я могу видеть цветной вывод, пока у меня CLICOLOR = 1.

  • Что я должен сделать, чтобы цвет каталога стал Голубым (94)?
  • Что это за CLICOLOR и LS_COLORS? Почему раскраска работает без LS_COLORS?
prosseek
источник

Ответы:

53

Существует несколько различных реализаций цвета для ls, и вы объединяете некоторые из них.

  • На FreeBSD и Mac OS X , lsпоказаны цвета , если CLICOLORпеременная среды или если -Gпередается в командной строке. Фактические цвета настраиваются с помощью LSCOLORSпеременной среды (встроенные значения по умолчанию используются, если эта переменная не установлена). Чтобы показать каталоги светло-голубым, используйте

    export LSCOLORS=Exfxcxdxbxegedabagacad
  • В GNU ls , например, в Linux, lsпоказывает цвета, если --colorпередается в командной строке. Фактические цвета настраиваются через LS_COLORSпеременную окружения, которую можно установить с помощью dircolorsкоманды (встроенные значения по умолчанию используются, если эта переменная не установлена).

Жиль "ТАК - перестань быть злым"
источник
5
Спасибо за ответ, не могли бы вы научить меня, что означает Exfxcxdxbxegedabagacad?
prosseek
@prosseek: см. справочные страницы, на которые я ссылался. Например, первые два символа - это передний план и фон для каталогов, eозначает темно-синий, Eозначает светло-синий и xозначает по умолчанию. fв третьей позиции делает символические ссылки пурпурным и тд.
Жиль "ТАК - перестать быть злым"
На этих же строчках, как сделать treeвыставочные цвета? Дерево показывает цвета на моем компьютере с Debian, но не на моем Mac. Переменные среды присутствуют для цвета, как описано выше. Так что мой Mac показывает цвета для любых lsкоманд, но нет tree. Я установил дерево с заваркой.
DanCat
2
@ DanCat, я не знаю. treeи не lsявляются связанными утилитами, нет никаких причин, по которым настройки одного будут применяться к другому. Вы должны задать это как отдельный вопрос.
Жиль "ТАК - перестань быть злым"
1
Для ленивых людей (как и я) вот генератор LSCOLORS geoff.greer.fm/lscolors
udondan
11

Что это за CLICOLOR и LS_COLORS? Почему раскраска работает без LS_COLORS?

CLICOLORбудет включать или выключать цвета. LS_COLORSне требуется, и позволит вам настроить цвета.

Обратите внимание, что в некоторых операционных системах (таких как MacOSX и FreeBSD) значение имеет имя LSCOLORS, а не LS_COLORS.

Я избегаю устанавливать цвет с помощью LS_COLORS, потому что тогда мне нужно применить ту же цветовую схему на сотне разных компьютеров и 10 разных Un * xes. Вместо этого я изменяю цвет в моей терминальной программе, которая работает одинаково на большинстве хостов Unix.

Стефан Ласевский
источник
4

Если вам нужен скрипт-обертка для ls, который работает во всех системах, абстрагируясь от этих различий в цвете и т. Д., См. Http://www.pixelbeat.org/scripts/l.

Падрейг Брейди
источник