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

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

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

434
задан 16 February 2017 в 09:42

5 ответов

  • синий: Directory
  • Green: Исполняемый или распознанный файл данных
  • Cyan (Sky Blue): Символический файл ссылок
  • Желтый с черным фоном: Device
  • Magenta (Pink): Файл графического изображения
  • Красный: Архивный файл
  • Красный с черным фоном: Разбитая ссылка

К вашему сведению:

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

    # включите поддержку цвета ls, а также добавьте удобные псевдонимы
    #if [ -x /usr/bin/ircolors ]; тогда
    # тест -r ~/.dircolors && оценивает "$(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 writeable;ow:other writeable;st:sticky;ex:ex:executable;"|sed -e 's/:/="/g; s/\;/"\n/g') 
    { 
     IFS=: 
     для i в $LS_COLORS 
     делать 
     echo -e "\e[${i#*=}m$( x=${i%=*}; [ "${!x}" ] && echo "${!x}" || echo "$x" )\e[m] 
     готовый 
    } 
    

Выход:
terminal output

Примечание:

  • Для получения дополнительной информации введите man dir_colors в терминал.
454
ответ дан 16 February 2017 в 09:42

Это расширяет ответ Karthick87 .


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

  • Бесцветный (белый) : файл или текст без имени файла (например, разрешения в выводе ls -l ) или файл с несколькими жесткими ссылками
  • Жирный синий : каталог
  • Жирный голубой : символическая ссылка
  • Жирный зеленый : исполняемый файл
  • Жирный красный : файл архива
  • Полужирный пурпурный : файл изображения, видео, графика и т. д. или дверь или разъем
  • Голубой : аудио файл
  • Желтый на черном фоне : труба (AKA FIFO)
  • Полужирный желтый на черном фоне : блочное устройство или символьное устройство
  • Полужирный красный на черном фоне : сиротская символическая ссылка или [1111880 1] отсутствующий файл
  • Без цвета с красным фоном : файл 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"
done
echo

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

gnome-terminal screenshot - default

Вывод с моими настройками ( пользовательские dircolors и пользовательская тема Solarized терминала ):

gnome-terminal screenshot - custom

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

Цвета и описания такие же с 14.04 по 17.10.

29
ответ дан 16 February 2017 в 09:42

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

Введите dircolors -p | less , чтобы увидеть текущий цветовой код.

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

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

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

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

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

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

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

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

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

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

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

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

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

18
ответ дан 16 February 2017 в 09:42

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

  • Turquoise: audio files1
  • Bright Red: Архивы и сжатые файлы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, lzh, lzma, tlz, txz, z, Z, dz, gz, lz, xz, bz2, bz, tbz, tbz2, tz, deb, rpm, jar, rar, ace, zoo, cpio, 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.


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

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

Пример:

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"

Печать "Hello World" ярко-красным цветом.

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

108
ответ дан 16 February 2017 в 09:42

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

NORMAL 00 # global default, although everything should be something.
FILE 00 # normal file
DIR 01;34 # directory
LINK 01;36 # symbolic link. (If you set this to 'target' instead of a
 # numerical value, the color is as for the file pointed to.)
FIFO 40;33 # pipe
SOCK 01;35 # socket
DOOR 01;35 # door
BLK 40;33;01 # block device driver
CHR 40;33;01 # character device driver
ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file
SETUID 37;41 # file that is setuid (u+s)
SETGID 30;43 # file that is setgid (g+s)
STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w)
OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable
# archives or compressed (bright red)
.tar 01;31
.tgz 01;31
# image formats
.jpg 01;35
.jpeg 01;35
.gif 01;35
.bmp 01;35
# audio formats
.aac 00;36
.flac 00;36
.ogg 00;36
  • Коды атрибутов: 00=нет 01=жирный 04=подчеркнутый 05=мигающий 07=обратный 08=свеченный
  • Коды цвета текста: 30=черный 31=красный 32=зеленый 33=желтый 34=синий 35=маджента 36=голубой 37=белый
  • Коды цвета фона: 40=черный 41=красный 42=зеленый 43=желтый 44=синий 45=маджента 46=голубой 47=белый

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

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

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

28
ответ дан 16 February 2017 в 09:42

Другие вопросы по тегам:

Похожие вопросы: