Как настроить цвета вывода ls через LS_COLORS
TL;DR
LS_COLORS — это переменная окружения, которая управляет цветами и атрибутами вывода команды ls в Bash. Создайте строку вида
LS_COLORS="di=1;31:*.mp3=1;32;41"и добавьте её в ~/.bashrc, чтобы сохранить цвета по умолчанию. В статье объяснены коды цветов и атрибутов, примеры пресетов, альтернативы и чек-листы для администраторов и пользователей.
Быстрые ссылки
- Как это работает
- Как задать свои цвета
- Как сделать их новыми настройками по умолчанию

Как это работает
Переменная LS_COLORS содержит список правил, которые сопоставляют типы файлов или шаблоны имён с числовыми кодами атрибутов и цветов. Когда вы запускаете ls (с опцией –color=auto или если ваша оболочка/терминал открывает цветной вывод по умолчанию), программа читает LS_COLORS и окрашивает вывод согласно правилам.
Чтобы посмотреть текущую схему цветов, выполните:
echo $LS_COLORSВы получите длинную строку с парами типа=код, разделёнными двоеточиями. Перед экспериментами рекомендуется сохранить текущую переменную в другую, чтобы быстро восстановить настройки:
ORIGINAL=$LS_COLORSА чтобы вернуть прежние значения в сессии:
LS_COLORS=$ORIGINALВажно: эти изменения действуют только в текущей сессии Bash до тех пор, пока вы не сохраните строку в файле конфигурации (~/.bashrc или аналогичном).
Внимание: некоторые реализации ls (в частности BSD-версия на macOS) используют другую переменную LSCOLORS или другой синтаксис. См. раздел совместимости ниже.
Как задать свои цвета — пошагово
- Понять базовый формат: каждая запись — это ключ=списоккоди_атрибутов. Примеры ключей: di, fi, ln, ex, *.mp3.
- Коды и атрибуты перечисляются через точку с запятой в значении. Несколько записей разделяются двоеточием.
- Проверяйте изменения в реальном времени с помощью
ls --color=auto.
Простейший пример — перекрасить директории в жирный красный только в текущей сессии:
LS_COLORS="di=1;31"Разбор: di — директории, = разделяет ключ и значение, 1;31 — жирный (1) и красный текст (31).
Если нужно добавить правило для файлов с расширением .desktop и сделать их подчёркнутыми и бирюзовыми, добавьте запись через двоеточие:
LS_COLORS="di=1;31:*.desktop=4;36"Здесь *.desktop — шаблон для имён файлов, 4;36 — подчёркнутый (4) и синий-голубой/циан (36).
Справочник кодов: цвета, атрибуты и фон
Ниже — собранный справочник, который обычно нужен при составлении LS_COLORS.
Цвета переднего плана (foreground):
- Чёрный: 30
- Синий: 34
- Бирюзовый/циан: 36
- Зелёный: 32
- Пурпурный: 35
- Красный: 31
- Белый: 37
- Жёлтый: 33
Атрибуты текста:
- Нормальный текст: 0
- Жирный/яркий: 1
- Тусклый: 2
- Подчёркнутый: 4
- Мигающий: 5 (не работает в большинстве эмуляторов)
- Инвертированный: 7
- Скрытый: 8
Коды фона (background):
- Чёрный фон: 40
- Синий фон: 44
- Бирюзовый фон: 46
- Зелёный фон: 42
- Пурпурный фон: 45
- Красный фон: 41
- Белый фон: 47
- Жёлтый фон: 43
Файловые ключи (filetype keys):
- di — директория
- fi — обычный файл
- ln — символическая ссылка
- pi — именованный канал (FIFO)
- so — сокет
- bd — блочное устройство
- cd — символьное устройство
- or — сирота (symbolic link, указывающий в никуда)
- mi — отсутствующий файл, на который указывает сирота
- ex — исполняемый файл (с правом x)
- .extension — любой файл с указанным расширением (например, .txt, .mp3, .desktop)
Чтобы объединить атрибуты и цвета, используйте точку с запятой: di=1;4;33;44 — жирный, подчёркнутый, жёлтый текст на синем фоне.

Примеры и пресеты
Ниже — несколько готовых конфигураций и сценариев, которые могут ускорить настройки.
Пример: жирный фиолетовый для директорий, подчёркнутый красный для исполняемых файлов, зелёный на красном для mp3:
LS_COLORS="di=1;35:ex=4;31:*.mp3=1;32;41"Минимальный «только директории» пресет для проверки:
LS_COLORS="di=1;34"Пресет для разработчика (файлы с расширением .sh — подчёркнуты, логи .log — красные, data-файлы — зелёные):
LS_COLORS="di=1;33:*.sh=4;36:*.log=1;31:*.dat=1;32"Сохраните понравившийся пресет в переменную в своей оболочке, проверьте ls --color=auto, затем внесите строку в ~/.bashrc, чтобы сделать её постоянной.

Как сделать новые цвета настройками по умолчанию
- Откройте ваш ~/.bashrc в любимом редакторе, например nano:
nano ~/.bashrc- Добавьте строку с вашим LS_COLORS в конец файла, например:
LS_COLORS="di=1;35:ex=4;31:*.mp3=1;32;41"- Сохраните файл и выйдите (в nano — Ctrl+O, Enter, Ctrl+X).
- Закройте и откройте терминал или выполните
source ~/.bashrc, чтобы применить изменения немедленно:
source ~/.bashrcЕсли захотите вернуть системные значения, просто удалите добавленную строку из ~/.bashrc и откройте новую сессию терминала; либо используйте временное восстановление через сохранённую переменную ORIGINAL (см. выше).

Когда это не работает — типичные причины и диагностика
- Вы используете macOS или BSD-версию ls: там часто поддерживается LSCOLORS (короткий формат) вместо LS_COLORS. Проверьте
man lsи ищите упоминание LSCOLORS. - Ваш терминал не поддерживает нужные атрибуты (например, инверсия или мигание). Попробуйте другой эмулятор терминала или проверьте переменную $TERM.
- Вы забыли использовать
--color=autoили переменнаяLS_COLORSне применяется из-за переназначенияls(alias). Проверьтеalias lsиtype ls. - Правила переписаны позже в процессе инициализации оболочки (например, системой или другими скриптами). Просмотрите ~/.bash_profile, /etc/profile и /etc/bash.bashrc на предмет переопределений.
Если ls не окрашивает файлы, попробуйте временно запустить:
/bin/ls --color=alwaysи проверьте вывод. Также посмотрите значение TERM:
echo $TERMи убедитесь, что он поддерживает цвета (например, xterm-256color).
Альтернативные подходы и совместимость
- dircolors — генерирует данные для LS_COLORS из человеко-читаемого файла. Вы можете создать файл с правилами и загрузить его:
dircolors -p > ~/.dircolors
# отредактируйте ~/.dircolors в текстовом виде
eval "$(dircolors ~/.dircolors)"Для macOS используйте LSCOLORS в ~/.bash_profile или другой конфигурации. Синтаксис LSCOLORS отличается и короче.
Использовать сторонние утилиты, которые визуализируют файлы (например, exa) и поддерживают собственный конфиг цветов.
Таблица совместимости (упрощённо):
- GNU coreutils ls (Linux): поддерживает LS_COLORS и dircolors
- BSD ls (macOS): использует LSCOLORS, другой синтаксис
- Пакеты типа exa: собственный конфиг и опции
Методология: как проектировать свою цветовую схему (короткая)
- Определите цели: видимость, приоритет файлом (исполняемый, конфиг, медиа), удобство для глаз.
- Выберите базовую палитру (2–4 цвета), чтобы не перегружать восприятие.
- Сопоставьте важность с контрастом (исполняемые — ярче, скрытые — менее заметны).
- Тестируйте в нескольких терминалах и при светлой/тёмной теме терминала.
- Зафиксируйте пресет и документируйте в dotfiles репозитории.
Чек-листы по ролям
Для администратора:
- Убедиться, что изменения не влияют на системные скрипты
- Хранить конфиг в централизованном dotfiles-репозитории
- Дать рекомендацию по совместимым TERM-значениям
Для разработчика:
- Выделить исполняемые файлы и скрипты ярким цветом
- Использовать отличимые цвета для разных типов ресурсов (.log, .tmp, .env)
- Тестировать в средах CI с разных систем (Linux/macOS)
Для обычного пользователя:
- Начать с одного простого пресета (например, только директории)
- Сохранить изменения в ~/.bashrc
- Держать резервную копию оригинальных значений
Шпаргалка и шаблоны (cheat sheet)
Основные команды:
# Просмотр текущих настроек
echo $LS_COLORS
# Временно установить в текущей сессии
LS_COLORS="di=1;35:ex=4;31:*.mp3=1;32;41"
# Восстановить из резервной переменной
LS_COLORS=$ORIGINAL
# Экспортировать через dircolors (если есть ~/.dircolors)
eval "$(dircolors ~/.dircolors)"Шаблон строки для .bashrc (скопируйте и адаптируйте):
# Пользовательская схема для ls
LS_COLORS="di=1;34:ln=36:so=35:pi=33:ex=1;32:*.sh=4;36:*.log=1;31:*.mp3=1;32;41"
export LS_COLORSРешение типичных задач: примеры использования
- Хочу быстро найти исполняемые файлы в каталоге: сделайте
ex=1;4;33(жирный, подчёркнутый, жёлтый). Затем выполнитеls -l— исполняемые будут выделяться. - Хочу, чтобы директории отличались менее ярко: используйте
di=0;34. - Нужно выделить мультимедиа:
*.mp3=1;32и*.mp4=1;32.
Безопасность и приватность
Переменная LS_COLORS не содержит конфиденциальной информации — она лишь задаёт отображение. Однако будьте внимательны при хранении общих dotfiles: не добавляйте в публичные репозитории приватные токены или пароли случайно. Сам LS_COLORS безопасен для совместного использования.
Маленький глоссарий — 1 строка на термин
- LS_COLORS — переменная окружения для цветовой схемы команды ls.
- dircolors — утилита для генерации/загрузки конфигурации LS_COLORS из файла.
- LSCOLORS — альтернативная короткая переменная, часто на macOS/BSD.
- TERM — переменная окружения, определяющая возможности терминала.
Когда менять схему не стоит — контрпримеры
- Если вы работаете в терминале, где цвета мешают доступности (высокая контрастность для слабовидящих), лучше отключить цвета.
- В скриптах или логах, где цветной вывод мешает парсингу текстовых данных, не используйте –color=always.
- При совместной работе в многопользовательской системе сохраняйте обратимость изменений — не навязывайте персональные настройки другим пользователям.
Резюме
LS_COLORS даёт гибкий и лёгкий способ визуально различать файлы в ls. Понимание ключей (di, ex, *.ext), кодов цветов и атрибутов позволяет настроить удобную палитру. Сохраните строку в ~/.bashrc или используйте dircolors для более читабельного управления. Проверяйте совместимость с вашей платформой и открывайте терминал заново после изменения конфигурации.
Ключевые действия:
- Сохраните оригинал перед изменениями:
ORIGINAL=$LS_COLORS. - Экспериментируйте временно:
LS_COLORS="di=1;31". - Сохраните навсегда: добавьте строку в ~/.bashrc и выполните
source ~/.bashrc.
Важно: если используете macOS, проверьте LSCOLORS и man ls.
Похожие материалы
Как надёжно удалять файлы в Windows
Как использовать Bitmoji Reactions в Snapchat
Ввод специальных символов в OS X за два нажатия
Включение TRIM для SSD в Windows 11
Скачивание файлов в Safari на iPhone и iPad