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

304

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

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

    
задан Rafid 14.12.2010 в 08:15
источник

5 ответов

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

Для информации:

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

Вы можете узнать, какие цвета 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,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.

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

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

Пример:

CHR40;33;01

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

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

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

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

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

"[1;31mHello World[m"

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

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

    
ответ дан Stefano Palazzo 14.12.2010 в 08:57
27

Если вы наберете dircolors ( echo $LS_COLORS также работает) из команды line вы получите список кодов и цветов для множества типов файлов в 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=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 14.09.2011 в 08:25
16

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

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

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

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

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

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

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

Pick an attribute code: 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed

Затем выберите append ;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. Просто бросьте числа в строку и наслаждайтесь простотой.

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

    
ответ дан flickerfly 22.03.2013 в 20:45
15

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

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

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

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

#!/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ипользовательскаятемаSolarizedterminal):

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

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

    
ответ дан wjandrea 17.02.2017 в 21:05