dircolors: изменить глобальные настройки цвета

40

Я понимаю, lsиспользует dircolorsдля отображения цветной вывод. dircolorsимеет базу данных цветов по умолчанию, связанную с расширениями файлов, которые можно распечатать с помощью команды

dircolors --print-database

Из того, что man dir_colorsя прочитал, общесистемная база данных должна быть расположена в /etc/DIR_COLORS. Но этот файл не существует в моей системе (Debian). Как я могу изменить общесистемные настройки цвета для dircolors? Откуда команда dircolors --print-databaseберет настройки, когда файл не существует.

Я знаю, что у пользователя может быть ~/.dircolorsсвой файл с его настройками, но он мне не подходит, так как мне нужно изменить настройки для всех.

Второй вопрос: можно ли использовать 8-битные цвета для дирколоров. Мой терминал есть xterm-256color.

user1968963
источник

Ответы:

36

lsберет настройки цвета из переменной окружения LS_COLORS. dircolorsэто просто удобный способ создания этой переменной среды. Чтобы эта переменная среды вступила в силу для всей системы, поместите ее в файл запуска вашей оболочки.

Для bash, вы бы поместили это в /etc/profile:

# `dircolors` prints out `LS_COLORS='...'; export LS_COLORS`, so eval'ing
# $(dircolors) effectively sets the LS_COLORS environment variable.

eval "$(dircolors /etc/DIR_COLORS)"

Для zsh, вы бы либо положить его /etc/zshrcили договориться zshо чтении /etc/profileпри запуске. Возможно, ваш дистрибутив уже zshсделал это. Я просто привожу это, чтобы подчеркнуть, что настройка dircolorsдля действительно всех зависит от оболочки, которую они используют.

Что касается того, откуда dircolorsберется его настройки, когда вы не указываете файл, он просто использует некоторые встроенные значения по умолчанию.

Вы можете использовать xterm256 цветовых escape-кодов в своем файле dircolors, но имейте в виду, что они будут работать только для xtermсовместимых терминалов. Например, они не будут работать на текстовой консоли Linux.

Формат для 256 цветовых escape-кодов предназначен 38;5;colorNдля цветов переднего плана и 48;5;colorNдля цветов фона. Так, например:

.mp3  38;5;160                   # Set fg color to color 160      
.flac 48;5;240                   # Set bg color to color 240
.ogg  38;5;160;48;5;240          # Set fg color 160 *and* bg color 240.
.wav  01;04;05;38;5;160;48;5;240 # Pure madness: make bold (01), underlined (04), blink (05), fg color 160, and bg color 240!
Matt
источник
1
Не могли бы вы объяснить, как я могу использовать 256 цветных кодов? Допустим, я хочу изменить следующее, .mp3 00;36чтобы использовать color126 из таблицы цветов xterm-256 upload.wikimedia.org/wikipedia/en/1/15/Xterm_256color_chart.svg
user1968963
1
Конечно, смотрите мое редактирование.
Мэтт
8

Откуда команда dircolors --print-databaseберет настройки, когда файл не существует.

Согласно руководству , он использует предварительно скомпилированную базу данных при отсутствии файла.

Если указан файл, dircolors читает его, чтобы определить, какие цвета использовать для каких типов файлов и расширений. В противном случае используется предварительно скомпилированная база данных. Для получения подробной информации о формате этих файлов, запустите ' dircolors --print-database'.

Чтобы изменить настройки для всех, вы можете создать /etc/dircolorsфайл и добавить следующее /etc/bashrc:

d=/etc/dircolors
test -r $d && eval "$(dircolors $d)"
devnull
источник
7

Linux устанавливает цвета фона консоли с помощью dircolors:

Ваш файл dircolors управляет цветами слов, которые отображаются через ls на консоли. Найти этот .dircolorsфайл для вашего дистрибутива, ссылку, чтобы помочь:

http://www.linuxfromscratch.org/blfs/view/svn/postlfs/profile.html

Для меня на Fedora 17 мой файл dircolors: /etc/DIR_COLORS

Скопируйте /etc/DIR_COLORSв свой /home/el/.dircolorsкаталог. Создайте его, если он не существует.

Отредактируйте /home/el/.dircolors, поищите текст "dir".

Изменить это:

DIR 01;34   # directory

К этому:

DIR 01;36   # directory

Сохраните и закройте и перезапустите оболочку. Каталоги переходят от темно-синего на черном (нечитаемый) к яркому бирюзовому на черном (читаемый).

Эрик Лещинский
источник
2
-1: нет /etc/DIR_COLORSв дистрибутиве OP, Debian. И он уже знает о том ~/.dircolors, что это был не вопрос
MestreLion