Что означают разные цвета в ls?

Что означают разные цвета в Ubuntu ls командование означает? Например, когда я набираю ls команда в одной из моих папок, я получаю один из файлов светло-зеленого цвета, другой (который является папкой) синего цвета с зеленой подсветкой.

Что означают эти цвета, и есть ли какое-либо руководство по всем цветам?

  • Синий: Каталог
  • Зеленый: Исполняемый или распознанный файл данных
  • Голубой (Небесно-голубой): Файл символической ссылки
  • Желтый с черным фоном: Устройство
  • Пурпурный (Розовый): Файл графического изображения
  • Красный: Архивный файл
  • Красный с черным фоном: Неработающая ссылка

Для вашей информации:

  • Чтобы отключить цвет, вы должны закомментировать следующие строки в .bashrc.

    # enable color support of ls and also add handy aliases#if [ -x /usr/bin/dircolors ]; then#    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"#    alias ls='ls --color=auto'#    #alias dir='dir --color=auto'#    #alias vdir='vdir --color=auto'##    alias grep='grep --color=auto'#    alias fgrep='fgrep --color=auto'#    alias egrep='egrep --color=auto'#fi
  • Также, если вы хотите увидеть свои собственные значения цвета bash, скопируйте / вставьте следующие коды в свой терминал.

    eval $(echo "no:global default;fi:normal file;di:directory;ln:symbolic link;pi:named pipe;so:socket;do:door;bd:block device;cd:character device;or:orphan symlink;mi:missing file;su:set uid;sg:set gid;tw:sticky other writable;ow:other writable;st:sticky;ex:executable;"|sed -e 's/:/="/g; s/\;/"\n/g')           {        IFS=:       for i in $LS_COLORS       do            echo -e "\e[${i#*=}m$( x=${i%=*}; [ "${!x}" ] && echo "${!x}" || echo "$x" )\e[m"   done       } 

Выход:
terminal output

Примечание:

  • Для получения дополнительной информации введите man dir_colors в терминале.

Вы можете узнать, какие цвета ls использует, глядя на $LS_COLORS переменная:

  • Бирюзовый: аудиофайлы1
  • Ярко-красный: Архивы и сжатые файлы2
  • Фиолетовый: изображения и видео3

Кроме того, файлы раскрашиваются по атрибутам:

alt text


  1. aac, au, flac, mid, midi, mka, mp3, mpc, ogg, ra, wav, axa, oga, spx, xspf.

  2. tar, tgz, arj, taz, lzma, tz, tz, zip, z, Z, Dz, gz, xz, bz2, bz, tbz, tbz2, tz, deb, rpm, jar, rar, глаз, зоопарк, tikpio, 7z, rz.

  3. jpg, jpeg, gif, bmp, pbm, pgm, ppm, tga, xbm, xpm, tif, tiff, png, svg, svgz, mng, pcx, mov, mpg, mpeg, m2v, mkv, ogm, mp4, m4v, mp4v, vob, qt, nuv, wmv, asf, rm, rmvb, flc, avi, fli, flv, gl, dl, xcf, xwd, yuv, cgm, emf, axv, anx, ogv, ogx.


Вся эта информация содержится в выходных данных dircolors --print-database, но его форматирование довольно нечитаемо.

Вот техническое объяснение того, что происходит:

Пример:

CHR 40;33;01

Цветовой код состоит из трех частей:

  • Первая часть перед точкой с запятой представляет стиль текста.

    • 00=нет, 01= жирный шрифт, 04 = подчеркивание, 05 = мигание, 07 = обратный, 08 = скрытый.
  • Вторая и третья части - это цвет и цвет фона:

    • 30 = черный, 31 = красный, 32 = зеленый, 33 = желтый, 34 = синий, 35 = пурпурный, 36 = голубой, 37 = белый.

Каждая часть может быть опущена, предполагая, что она начинается слева. т.е. "01" означает жирный шрифт, "01; 31" означает жирный и красный. И вы бы заставили свой терминал печатать в цвете, экранировав инструкцию с помощью \33[ и заканчивать его с помощью m. 33 или 1B в шестнадцатеричном формате - это знак ASCII "ESCAPE" (специальный символ в наборе символов ASCII). Пример:

"\33[1;31mHello World\33[m"

Надпись "Привет, мир" ярко-красного цвета.

Команда ls с аргументом --color=auto (в Ubuntu, ls является псевдонимом для ls --color=auto) просматривает все имена файлов и сначала пытается сопоставить разные типы, такие как исполняемый файл, канал и так далее. Затем он пытается сопоставить регулярные выражения, такие как *.wav, и печатает результирующее имя файла, заключенное в эти инструкции по изменению цвета для bash.

Это распространяется на Ответ Картик87.


Полный список с настройками по умолчанию

  • Неокрашенный (белый): файл или текст, не относящийся к имени файла (например, разрешения в выводе ls -l) или файл с несколькими жесткими ссылками
  • Ярко-синий: каталог
  • Жирный голубой: символическая ссылка
  • Ярко-зеленый: исполняемый файл
  • Жирный красный: архивный файл
  • Ярко-пурпурный: файл изображения, видео, графика и т.д. или дверь или разъем
  • Голубой: аудиофайл
  • Желтый с черным фоном: труба (ОНА ЖЕ FIFO)
  • Жирный желтый цвет на черном фоне: блокирующее устройство или символьное устройство
  • Жирный красный цвет на черном фоне: сиротская символическая ссылка или отсутствующий файл
  • Неокрашенный с красным фоном: файл set-user-ID
  • Черный с желтым фоном: файл set-group-ID
  • Черный с красным фоном: файл с возможностью
  • Белый с синим фоном: липкий каталог
  • Синий с зеленым фоном: другой каталог, доступный для записи
  • Черный с зеленым фоном: липкий и другой каталог, доступный для записи

Обратите внимание, что ярко-красный выглядит оранжевым, черный выглядит темно-серым, голубой выглядит синим / зеленым, а ярко-пурпурный выглядит фиолетовым / розовым / лавандовым.

Скрипт для отображения цветов

#!/bin/bash# For LS_COLORS, print type and description in the relevant color.declare -A descriptions=(    [bd]="block device"    [ca]="file with capability"    [cd]="character device"    [di]="directory"    [do]="door"    [ex]="executable file"    [fi]="regular file"    [ln]="symbolic link"    [mh]="multi-hardlink"    [mi]="missing file"    [no]="normal non-filename text"    [or]="orphan symlink"    [ow]="other-writable directory"    [pi]="named pipe, AKA FIFO"    [rs]="reset to no color"    [sg]="set-group-ID"    [so]="socket"    [st]="sticky directory"    [su]="set-user-ID"    [tw]="sticky and other-writable directory")IFS=:for ls_color in $LS_COLORS; do    color="${ls_color#*=}"    type="${ls_color%=*}"    # Add description for named types.    desc="${descriptions[$type]}"    # Separate each color with a newline.    if [[ $color_prev ]] && [[ $color != "$color_prev" ]]; then        echo    fi    printf "\e[%sm%s%s\e[m " "$color" "$type" "${desc:+ ($desc)}"    # For next loop    color_prev="$color"doneecho

Вывод с настройкой по умолчанию:

gnome-terminal screenshot - default

Вывод с помощью моей настройки (пользовательские цвета и пользовательская тема соляризованного терминала):

gnome-terminal screenshot - custom

Я получил описания от dircolors -p и man dir_colors, и заполнил пробелы своими собственными исследованиями.

Цвета и описания остаются прежними с 14.04 по 17.10.

Если вы наберете dircolors (echo $LS_COLORS также работает) из командной строки вы получите список кодов и цветов для множества типов файлов в 1 строке. dircolors --print-database показывает их по 1 строке за раз. Вот краткий список (я постарался включить самые важные из них). Внизу есть объяснение того, что представляют различные коды в конце каждой строки:

ОБЫЧНЫЙ 00 # глобальный дефолт, хотя все должно быть как-то.ФАЙЛ 00 # обычный каталог файлов 01;34 # Ссылка на каталог 01;36 # символическая ссылка. (Если вы установите для этого значение 'target' вместо числового значения #, цвет будет таким же, как для файла, на который указан.)FIFO 40;33 # pipesock 01;35 # socketDOOR 01;35 # doorblk 40;33;01 # драйвер блочного устройства 40;33;01 # символьное устройство Driverorphan 40;31;01 # символическая ссылка на несуществующий файл или нестатируемый FILESETUID 37;41 # файл с идентификатором setuid (u+s)SETGID 30;43 # файл с идентификатором setgid (g+s)STICKY_OTHER_WRITABLE 30;42 # каталог, который является липким и доступен для записи другим (+t,o+w)OTHER_WRITABLE 34;42 # каталог, который доступен для записи другим способом (o+w), а не stickySTICKY 37;44 # каталог с установленным битом sticky (+t) и не доступен для записи другим способом# архивы или сжатый (ярко-красный).tar 01;31.tgz 01;31# изображение formats.jpg 01;35.jpeg 01;35.gif 01;35. bmp 01;35# аудиоформаты.aac 00;36.flac 00;36.ogg 00;36
  • Коды атрибутов: 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
  • Текстовые цветовые коды: 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
  • Цветовые коды фона: 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white

Если вы хотите поиграть с этим, вот пример того, как задать цвет для файла:

export LS_COLORS=$LS_COLORS:"*.ogg=01;35":"*.mp3=01;35"  

Это установит *.ogg и .mp3 к bold magenta. И если вы положите его в свой .bashrc файл, который он получит, станет постоянным.

Ни один из приведенных здесь ответов не включает 256 вариантов цвета в последних версиях Ubuntu. У меня дефицит цвета (некоторые цвета доставляют мне проблемы рядом друг с другом), поэтому мне очень трудно читать синий каталог по умолчанию на черном. Далее следует мое исследование, направленное на то, чтобы изменить это.

Тип dircolors -p |less чтобы увидеть ваш текущий цветовой код.

Файл .bashrc по умолчанию уже должен быть настроен не только для использования системного цветового кода, но и для ~ /.dircolors, поэтому сбросьте выходные данные dircolors в .dircolor, чтобы вы могли начать с этого с помощью этой команды.dircolors -p > ~/.dircolors

Альтернатива: подберите очень похожие 256 цветных dircolors из сиби загорелся проект.

Хватай это сценарий colortest и запустите его с помощью команды colortest -w таким образом, вы можете видеть все цвета сразу. Выберите цвет. Мне нравится оранжевый №208. Я хочу, чтобы это был цвет текста, поэтому, используя эту информацию о расширенных цветовых кодах, я могу применить это.

Итак, у тебя есть цвет, и что теперь? Сначала мы должны создать строку.

Первое число будет кодом атрибута, скорее всего 00, но если вы хотите, чтобы оно мигало, используйте 05:

Выберите код атрибута: 00=нет 01=жирный 04=подчеркивание 05= мигание 07= обратный 08=скрытый

Следующий выбор добавить ;38;5; к этому коду атрибута, чтобы указать свой цвет текста, чтобы получить 00;38;5; а затем добавить свой цвет. Я выбрал 208, так что я получаю 00;38;5;208.

Если вы хотите также наложить на него фон, выберите другой цвет (скажем, 56) с помощью скрипта colortest и добавьте ;48;5; для фона и 56 для цвета, чтобы получить общую строку из 00;38;5;208;48;5;56.

Итак, теперь он у вас есть, что вы с ним делаете?

vim ~/.dircolors и найдите раздел, который вы хотите изменить (для меня это DIR) на строку, которую мы определили выше "00;38;5;208".

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

Вы можете проделать ту же процедуру с 16 цветами. Вам не нужны специальные ;38;5 или ;48;5 штуки. Просто вставьте числа в строку и наслаждайтесь простотой.

Благодаря Дэн и сиби за их заметки и код по этому поводу.