экспорт LS_COLORS: применить правило для каждого файла, начинающегося README*
У меня небольшая проблема со следующим правилом. Если я сделаю :
eval `/opt/local/libexec/gnubin/dircolors ~/.dircolors`
export LS_COLORS="${LS_COLORS}*README=00;37;44"
Затем при создании
README
файл, то я получу:
Но теперь я хотел бы применить правило и сделать то же самое для каждого имени файла, начинающегося с README (например,
README_important
).
для этого я попытался поставить:
export LS_COLORS="${LS_COLORS}*README*=00;37;44"
но он не отображается, как на изображении выше (только белый).
Как работать с подстановочными знаками с помощью
LS_COLORS
(Я использую MacOS Big Sur)?
РЕДАКТИРОВАТЬ: Следуя совету пользователя 1934428, я пробовал:
export LS_COLORS="${LS_COLORS}:*README*=00;37;44"
К сожалению, например, имя файла README_important не отображается, как на моем изображении выше, когда я применяю команду "
l
"который фактически определяется:
alias l='grc -es --colour=auto ls --color -Gh -C -lrt'
Почему не принят синтаксис README ? особенно вторая звездочка, которая должна расширять все файлы с именами как
README_something
,
README_anything
... так далее
Что вы думаете об этом странном поведении?
2 ответа
Я вижу здесь несколько проблем:
Очевидно, вы предполагаете, что LS_COLOURS уже имеет значение, потому что вы его расширяете. Однако записи в LS_COLOURS разделяются двоеточием, а у вас его нет.
Другая проблема в том, что последовательность имеет значение:
ls
анализирует записи одну за другой, как только находит подходящую, использует именно этот цвет. Поэтому более конкретные записи должны быть в начале списка цветов.
I would like to apply the rule and do the same for every filename beginning by README (like README_something, README_important).
That is not possible. Looking at the sources of GNU ls https://github.com/wertarbyte/coreutils/blob/master/src/ls.c#L4206 the filename is matched form the end until it matches the string with
strncmp
.
Also this handles empty
LS_COLORS
:
export LS_COLORS="*README=00;37;44${LS_COLORS:+:${LS_COLORS}}"