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


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

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


299
2017-12-14 08:15


происхождения




ответы:


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

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

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

    Вывод:
    alt text

Заметка: 

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

307
2017-12-14 08:18



Что eval сценарий, показывающий выходное представление цвета для каждого типа, является блестящим ... спасибо! - Russ
Чистая еда;) - Homunculus Reticulli
Более читаемая версия этого eval скрипт здесь: github.com/gkotian/gautam_linux/blob/master/scripts/colours.sh - Gautam
Красный также является мертвой символической линией. - Thomas Ward♦
как насчет файлов в обычном белом тексте? - S..


Вы можете узнать, какие цвета 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, lzh, lzma, tlz, txz, zip, z, Z, dz, gz, lz, xz, bz2, bz, tbz, tbz2, tz, deb, rpm, jar, rar, ace, зоопарк, 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.


Вся эта информация содержится в 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.


86
2017-12-14 08:57



Благодаря! Я смотрел на Визуализация топологии Git  и задались вопросом, почему печатались некоторые персонажи. - pdp


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

NORMAL 00 # global default, хотя все должно быть чем-то.
ФАЙЛ 00 # нормальный файл
Каталог DIR 01; 34 #
LINK 01; 36 # символическая ссылка. (Если вы установите для этого значение 'target' вместо
 # числовое значение, цвет соответствует файлу, на который указывает.)
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 # dir, который является липким и другим записываемым (+ 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 файл станет постоянным.


27
2017-09-14 08:25



Эй, может, кто-то еще придет с лучшим ответом. Кстати, вы получили меня более чем 15k с этим upvote;) - Rinzwind
раскачать! Вы сами там ... Еще раз спасибо, я сделал «строку», чтобы найти некоторые цвета, которые я не знал о - user784637
Этот (отличный) ответ был слиты, если вам интересно о датах. :-) - Stefano Palazzo♦
@Rinzwind, поэтому для установки цвета для pdf файл, этот процесс должен использовать export? Можно ли просто добавить одно расширение по умолчанию LS_COLORS  переменная? - Sigur


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

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

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

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

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

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

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

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

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

Если вы хотите также установить фон на него, выберите другой цвет (допустим, 56) с помощью colortest script и append ;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. Просто бросьте номера в строку и наслаждайтесь простотой.

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


15
2018-03-22 20:45





Это расширяется Ответ 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

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

gnome-terminal screenshot

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

gnome-terminal screenshot

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

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


14
2018-02-17 21:05



Откуда ты знаешь rs означает RESET, mh означает MULTIHARDLINK, ca означает CAPABILITY и т.д? - Fredrick Gauss
@FredrickGauss Как я писал в ответ, я получил описания от запуска dircolors -p, - wjandrea
dircolors -p не говори RS является RESET 0 # сбросить до "нормального" цвета , - Fredrick Gauss
@FredrickGauss Не указано явно, но «RESET» является единственным, который может быть сокращен как «rs», а цвет (0) соответствует. - wjandrea
Я прошу об этом. Вы просто оцените, сделайте вывод. - Fredrick Gauss