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

364

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

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

Рафид
источник

Ответы:

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

Довожу до вашего сведения:

  • Чтобы выключить цвет, вы должны закомментировать следующие строки в .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       
    } 

    Выход:
    альтернативный текст

Примечание:

  • Для получения дополнительной информации введите man dir_colorsв терминале.
karthick87
источник
28
Этот evalскрипт, показывающий представление выходного цвета для каждого типа, великолепен ... спасибо!
Расс
2
Чистый источник;)
Гомункул Ретикулли
5
Более читаемая версия этого evalскрипта находится здесь: github.com/gkotian/gautam_linux/blob/master/scripts/colours.sh
Gautam
3
Красный также мертвая символическая ссылка.
Томас Уорд
1
как насчет файлов в обычном белом тексте?
S ..
98

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

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

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

альтернативный текст


  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, zip, z, Z, dz, gz, lz, xz, bz2, bz, tbz, tbz2, tz, deb, rpm, jar, rar, ace, зоопарк, cpio, 7z, рз.

  3. JPG, JPEG, GIF, BMP, PBM, PGM, PPM, TGA, XBM, XPM, TIF, TIFF, PNG, SVG, SVGZ, Mng, PCX, MOV, MPG, MPEG, M2V, MKV, ОГМ, MP4, M4V, mp4v, vob, qt, nuv, wmv, asf, rm, rmvb, flc, avi, fli, flv, gl, dl, xcf, xwd, yuv, cgm, emf, axv, тревожность, 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"

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

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

Стефано Палаццо
источник
Спасибо! Я смотрел на вопрос о визуализации топологии Git и удивлялся, почему некоторые символы печатались.
пдп
27

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

NORMAL 00 # глобальное значение по умолчанию, хотя все должно быть чем-то.
ФАЙЛ 00 # нормальный файл
DIR 01; 34 # каталог
LINK 01; 36 # символическая ссылка. (Если вы установите для этого «цель» вместо
 # числовое значение, цвет такой же, как для указанного файла.)
FIFO 40; 33 # труба
SOCK 01; 35 # гнездо
ДВЕРЬ 01; дверь 35 #
BLK 40; 33; 01 # драйвер блочного устройства
CHR 40; 33; 01 # драйвер устройства
ORPHAN 40; 31; 01 # символическая ссылка на несуществующий файл или файл, недоступный для проверки
SETUID 37; 41 # файл, который является setuid (u + s)
SETGID 30; 43 # файл, который является setgid (g + s)
STICKY_OTHER_WRITABLE 30; 42 # каталог, который прикреплен и доступен для записи (+ t, o + w)
OTHER_WRITABLE 34; 42 # dir, который доступен для записи (o + w) и не является липким
STICKY 37; 44 # dir с установленным битом закрепления (+ t) и не для записи
# архив или сжатый (ярко-красный)
.tar 01; 31
.tgz 01; 31
# форматы изображений
.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файл, он станет постоянным.

Rinzwind
источник
2
Эй, может, кто-то придет с лучшим ответом. Кстати, вы получили меня более 15k с этим upvote;)
Rinzwind
раскачать! Вы попали туда ... Еще раз спасибо, я сделал / "строку", чтобы найти некоторые цвета, в которых я не был уверен
user784637
Этот (превосходный) ответ был объединен , если вам интересно узнать даты. :-)
Стефано Палаццо
@Rinzwind, так чтобы установить цвет для pdfфайла, процесс должен использовать export? Можно ли просто добавить одно расширение в LS_COLORS переменную по умолчанию ?
Сигур
23

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


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

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

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

#!/bin/bash
# For LS_COLORS, print type and description in the relevant color.

IFS=:
for ls_color in $LS_COLORS; do
    color="${ls_color#*=}"
    type="${ls_color%=*}"

    # Add descriptions for named types.
    case "$type" in
    bd) type+=" (block device)" ;;
    ca) type+=" (file with capability)" ;;
    cd) type+=" (character device)" ;;
    di) type+=" (directory)" ;;
    do) type+=" (door)" ;;
    ex) type+=" (executable file)" ;;
    fi) type+=" (regular file)" ;;
    ln) type+=" (symbolic link)" ;;
    mh) type+=" (multi-hardlink)" ;;
    mi) type+=" (missing file)" ;;
    no) type+=" (normal non-filename text)" ;;
    or) type+=" (orphan symlink)" ;;
    ow) type+=" (other-writable directory)" ;;
    pi) type+=" (named pipe, AKA FIFO)" ;;
    rs) type+=" (reset to no color)" ;;
    sg) type+=" (set-group-ID)" ;;
    so) type+=" (socket)" ;;
    st) type+=" (sticky directory)" ;;
    su) type+=" (set-user-ID)" ;;
    tw) type+=" (sticky and other-writable directory)" ;;
    esac

    # Separate each color with a newline.
    if [[ $color_prev ]] && [[ $color != $color_prev ]]; then
        echo
    fi

    printf "\e[%sm%s\e[m " "$color" "$type"

    # For next loop
    color_prev="$color"
done
echo

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

скриншот терминала гнома

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

скриншот терминала гнома

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

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

wjandrea
источник
Как вы узнали о rsсредствах RESET, mhсредствах MULTIHARDLINK, caсредствах и CAPABILITYт. Д.?
Фредрик Гаусс
@FredrickGauss Как я уже писал в ответе, я получил описания от работы dircolors -p.
wjandrea
dircolors -pне говорит, что rs - это СБРОС 0 # сброса на «нормальный» цвет .
Фредрик Гаусс
@FredrickGauss Не явно, но «RESET» является единственным, который может быть сокращен как «rs», и цвет (0) совпадает.
wjandrea
18

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

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

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

Альтернатива: подобрать очень похожие 256 цветов в солнечном проекте Seebi .

Возьмите этот скрипт для проверки цвета и запустите его с помощью команды, 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для получения кода, чтобы установить переменную LS_COLORS. Вы можете просто вставить это в сеанс терминала или закрыть свой терминал и снова открыть его. Вы также можете передать это в файл и запустить его как скрипт оболочки.

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

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

flickerfly
источник
пожалуйста, проверьте, будут ли 256 цветов работать только в xterm-совместимых терминалах . Итак, 256 цветов не работают для меня с Konsole, но работают с xterm и rxvt-unicode .
ДК Бозе
1
Konsole делает свое дело Проверьте draculatheme.com/konsole или techoverflow.net/2013/11/08/install-konsole-solarized-theme для хорошей цветовой схемы.
мерцание