Мой дистрибутив RHEL. Переменная LS_COLORS состоит из таких элементов, как rs, di, *.tzo и т. д. Мне было интересно, как добавить новый тип расширения.

Аналогично, в каком порядке обрабатываются расширения. Если для di задано значение blue, и я создам расширение, называемое, например, zz, которое выполняет логику, чтобы выяснить, что значит быть типом «zz», будет ли одно идти за другим?

0
Excal 13 Июл 2018 в 23:08
Примеры см. в /etc/DIR_COLORS.
 – 
Andy Dalton
13 Июл 2018 в 23:54

2 ответа

Вы должны использовать dircolors, чтобы персонализировать цвета, используемые ls.

dircolors -p > dircolors.txt

Выведет базу данных цветов в более или менее удобочитаемой форме и сохранит ее в dircolors.txt, которую вы затем сможете отредактировать, чтобы настроить параметры. Вы увидите ряд настроек цвета для «основных типов файлов», которые соответствуют di и т. д.; вы можете изменить цвета, связанные с ними, но вы не можете добавлять свои собственные типы. Вы также увидите расширения файлов (начинающиеся с .) и соответствующие цвета; здесь вы можете добавить свои собственные расширения. Как только вы закончите, запустите

dircolors dircolors.txt

Для создания соответствующего значения LS_COLORS, которое вы должны установить в сценариях запуска вашей оболочки. Порядок расширений на самом деле не имеет значения, поскольку у вас должен быть только один параметр цвета для каждого расширения.

Вы также можете сохранить определения цвета напрямую, если хотите, и запустить

eval $(dircolors -b /path/to/dircolors.txt)

В ваших сценариях запуска. (Если вы используете этот подход, может иметь смысл хранить цвета в ~/.dircolors.)

1
Stephen Kitt 14 Июл 2018 в 00:00

Чтобы расширить мой комментарий выше, вы создаете файл типа /etc/DIR_COLORS в своем домашнем каталоге, может быть, ~/.dir_color, затем в своем файле .bashrc (при условии, что вы используете bash) вы можно добавить:

if [[ -e "${HOME}/.dir_colors" ]]; then
    eval "$(dircolors -b ${HOME}/.dir_colors)"
fi

Это установит LS_COLORS на основе конфигурации в .dir_colors. Вы можете настроить ~/.dir_colors по своему усмотрению. Если вы измените его, вам потребуется повторно использовать .bashrc:

. ~/.bashrc
0
Andy Dalton 14 Июл 2018 в 00:08
Это будет работать только в системах, в которых уже есть /etc/DIR_COLORS; мой нет, я не уверен, какие дистрибутивы поставляются с этим по умолчанию.
 – 
Stephen Kitt
14 Июл 2018 в 00:03
Это неправда, для этого не требуется /etc/DIR_COLORS (кроме той части, где вы можете использовать это как ссылку).
 – 
Andy Dalton
14 Июл 2018 в 00:08
Joe Random User немного сложно «создать файл типа /etc/DIR_COLORS», если такого файла нет, который можно было бы использовать в качестве эталона.
 – 
Stephen Kitt
14 Июл 2018 в 00:10
Если у Joe Random User нет /etc/DIR_COLORS, он наверняка может использовать Google, чтобы получить репрезентативный пример, или использовать dircolors -p, как вы предлагаете.
 – 
Andy Dalton
14 Июл 2018 в 00:14