Как изменить цвета каталогов и файлов в команде ls

Опубликовано: 2022-01-29

Если вы запускали команду ls в Bash, вы заметите, что каталоги и файлы, которые вы видите, окрашены в соответствии с их типом. Вы можете настроить собственную цветовую схему, чтобы выбрать различные цвета текста, цвета фона и форматирование, например жирный шрифт и подчеркивание.

Как это работает

Цветовая схема хранится в переменной LS_COLORS. Чтобы просмотреть текущую цветовую схему, вы можете указать Bash напечатать содержимое переменной:

 эхо $LS_COLORS

Вы увидите длинный список типов файлов и числовых кодов. Мы объясним, как создать такой список самостоятельно.

Прежде чем экспериментировать с этим, мы рекомендуем сохранить текущее содержимое переменной LS_COLORS в другую переменную. Это позволит вам быстро восстановить настройки по умолчанию, не выходя из оболочки и не входя снова, а также не закрывая и не открывая снова окно терминала. Чтобы сохранить текущее содержимое переменной LS_COLORS в новую переменную с именем ORIGINAL, запустите:

 ОРИГИНАЛ=$LS_COLORS 

В любой момент вы можете запустить следующую команду, чтобы отменить изменения и восстановить цвета по умолчанию:

 LS_COLORS=$ОРИГИНАЛ
Реклама

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

Как установить собственные цвета

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

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

 LS_COLORS="ди=1;31"

Бит di=1;31 сообщает ls , что каталоги ( di ) выделены ( = ) полужирным ( 1; ) красным ( 31 ).

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

 LS_COLORS="di=1:31:*.desktop=4;36"
Реклама

Это сообщает ls , что каталоги ( di ) выделены ( = ) полужирным ( 1; ) красным ( 31 ) и ( : ) любой файл, оканчивающийся на .desktop ( *.desktop ), ( = ) подчеркнутый ( 4; ) голубой ( 36 ).

Это процесс составления вашего списка типов файлов и цветов. Укажите столько, сколько хотите, в форме filetype=color, разделяя каждый символ двоеточием (:).

СВЯЗАННЫЕ С: Как настроить (и раскрасить) вашу подсказку Bash

Чтобы составить свой собственный список, вам просто нужно знать список цветовых кодов и кодов типов файлов. При этом используются те же цифровые цветовые коды, которые вы используете при изменении цвета в приглашении Bash.

Вот список цветовых кодов для текста переднего плана:

  • Черный: 30
  • Синий: 34
  • Голубой: 36
  • Зеленый: 32
  • Фиолетовый: 35
  • Красный: 31
  • Белый: 37
  • Желтый: 33

Например, поскольку желтый текст имеет цветовой код 33, вы должны использовать di=33 , чтобы сделать каталоги желтыми.

Вот список атрибутов цвета текста:

  • Обычный текст: 0
  • Жирный или светлый текст: 1 (зависит от эмулятора терминала).
  • Тусклый текст: 2
  • Подчеркнутый текст: 4
  • Мигающий текст: 5 (это не работает в большинстве эмуляторов терминала).
  • Перевернутый текст: 7 (это инвертирует цвета переднего плана и фона, поэтому вы увидите черный текст на белом фоне, если текущий текст — белый текст на черном фоне).
  • Скрытый текст: 8

При указании атрибута или нескольких цветовых кодов разделяйте список кодов точкой с запятой (;). Вам не нужно указывать 0 для обычного текста, так как обычный текст используется, когда вы не указываете здесь атрибут.

Например, поскольку полужирный текст имеет цветовой код 1, а желтый текст — цветовой код 33, вы должны использовать di=1;33 , чтобы выделить каталоги жирным желтым цветом. Вы также можете указать более одного атрибута. Например, вы можете использовать di=1;4;33 , чтобы выделить каталоги полужирным шрифтом с подчеркнутым желтым цветом.

Вот список кодов цветов фона:

  • Черный фон: 40
  • Синий фон: 44
  • Голубой фон: 46
  • Зеленый фон: 42
  • Фиолетовый фон: 45
  • Красный фон: 41
  • Белый фон: 47
  • Желтый фон: 43

Например, поскольку синий фон имеет цветовой код 44, вы должны использовать di=44 , чтобы использовать синий фон для каталогов. Вы также можете комбинировать код цвета фона, код цвета переднего плана и столько атрибутов, сколько хотите. Например, di=1;4;33;44 даст вам жирный подчеркнутый желтый текст на синем фоне.

Вот список кодов типов файлов:

  • Каталог: ди
  • Файл: fi
  • Символическая ссылка: ln
  • Именованный канал (FIFO): пи
  • Розетка: так
  • Блочное устройство: bd
  • Символьное устройство: компакт-диск
  • Потерянная символическая ссылка (указывает на файл, который больше не существует): или
  • Отсутствующий файл (отсутствующий файл, на который указывает потерянная символическая ссылка): mi
  • Исполняемый файл (имеет разрешение «x»): ex
  • *.extension: Любой файл, заканчивающийся указанным вами расширением. Например, используйте *.txt для файлов, заканчивающихся на .txt, *.mp3 для файлов, заканчивающихся на .mp3, *.desktop для файлов, заканчивающихся на .desktop, или что-то еще, что вам нравится. Вы можете указать столько различных расширений файлов, сколько захотите.
Реклама

Укажите столько различных типов кодов типов файлов с любым количеством цветов, сколько хотите, разделив их символом :. Повторите этот процесс, чтобы собрать переменную LS_COLORS.

Например, допустим, вы хотите использовать жирный фиолетовый текст для каталогов, подчеркнутый красный текст для исполняемых файлов и жирный зеленый текст на красном фоне для файлов .mp3. Объединив коды типов файлов и цветовые коды из приведенных выше списков, вы получите:

 LS_COLORS="di=1;35:ex=4;31:*.mp3=1;32;41" 

Как установить новые цвета по умолчанию

Теперь у вас есть пользовательская переменная LS_COLORS, которая работает в текущем сеансе Bash. Однако вы, вероятно, захотите сделать его постоянным, чтобы он автоматически использовался всякий раз, когда вы начинаете новый сеанс Bash, и вам не нужно об этом помнить.

Вы можете установить свою пользовательскую переменную LS_COLORS и любую другую переменную Bash, которая вам нравится, добавив ее в файл .bashrc вашей учетной записи пользователя. Этот файл находится по адресу ~/.bashrc. Итак, если ваше имя пользователя — bob, вы найдете его в /home/bob/.bashrc. Есть и другие способы установки переменных окружения, но это самый простой.

Сначала откройте этот файл в предпочитаемом вами текстовом редакторе. Мы будем использовать nano в качестве примера, но вы можете использовать vi, emacs или что-то еще, что вам нравится.

 нано ~/.bashrc 

Добавьте свою пользовательскую переменную LS_COLORS в новую строку в конце файла, например:

 LS_COLORS="di=1;35:ex=4;31:*.mp3=1;32;41"
Реклама

Сохраните файл и выйдите. В nano нажмите Ctrl+O, затем нажмите Enter, чтобы сохранить, затем нажмите Ctrl+X, чтобы выйти.

Всякий раз, когда вы начинаете новый сеанс Bash, Bash читает файл .bashrc и автоматически устанавливает вашу переменную LS_COLORS. Чтобы изменить цвета в будущем, вернитесь к файлу .bashrc и отредактируйте строку LS_COLORS.

Вы также можете просто удалить строку LS_COLORS= , добавленную вами в файл .bashrc, чтобы снова использовать цвета по умолчанию. Если вы не установите значение LS_COLORS, Bash будет использовать цвета по умолчанию.