Що означають різні кольори у л?


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       
    } 
    

    Вихід:
    alt текст

Примітка:

  • Для отримання додаткової інформації введіть man dir_colorsтермінал.

28
Та evalсценарій, що показує вихідне зображення кольорів для кожного типу, є геніальним ... дякую!
Русс

2
Чистий витяг;)
Homunculus Reticulli

5
Більш читабельна версія цього evalсценарію тут: github.com/gkotian/gautam_linux/blob/master/scripts/colours.sh
Гаутам

3
Червоний колір - також мертве симпосилання.
Thomas Ward

1
як щодо файлів у звичайному білому тексті?
S ..

98

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

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

Крім того, файли забарвлюються за атрибутами:

alt текст


  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.


Дякую! Я дивився на питання візуалізації топології Гіта і цікавився, чому деякі герої друкуються.
pdp

27

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

NORMAL 00 # глобальний за замовчуванням, хоча все повинно бути щось.
ФАЙЛ 00 # звичайний файл
DIR 01; 34 # каталог
ПОСИЛАННЯ 01; 36 # символічне посилання. (Якщо ви встановите це значення "target" замість a
 # числове значення, колір є для вказаного файлу.)
FIFO 40; 33 # труба
SOCK 01; 35 # розетка
ДВЕРІ 01; 35 # двері
BLK 40; 33; 01 # блок драйверів пристрою
CHR 40; 33; 01 # драйвер пристрою символів
ORPHAN 40; 31; 01 # символьне посилання на неіснуючий файл або нестабільний файл
SETUID 37; 41 # встановлений файл (u + s)
SETGID 30; 43 # встановлений файл (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файл, він стане постійним.


2
Гей, можливо, хтось інший приходить з кращою відповіддю. До речі, ти отримав мені понад 15 тис. З цією нагодою;)
Rinzwind

рок на! Ви потрапили туди ... Хоча, ще раз дякую, я зробив / "рядок", щоб шукати деякі кольори, про які я не був
певен

Ця (відмінна) відповідь була об'єднана , якщо ви цікавитесь датами. :-)
Стефано Палаццо

@Rinzwind, щоб встановити колір для pdfфайлу, процес використовувати export? Чи можна просто додати одне розширення до LS_COLORS змінної за замовчуванням ?
Сигур

23

Це пояснюється відповіддю Картіка87 .


З налаштуваннями за замовчуванням

  • Некольоровий (білий) : текст файлу або не ім'я файлу (наприклад, дозволи на виході ls -l)
  • Жирний синій : каталог
  • Сміливий блакитний : символічне посилання
  • Жирний зелений : виконуваний файл
  • Жирний червоний : архівний файл
  • Жирний пурпуровий : файл зображення, відео, графічне зображення тощо або дверцята чи розетка
  • Cyan : аудіофайл
  • Жовтий з чорним фоном : труба (AKA FIFO)
  • Жирний жовтий з чорним фоном : блоковий пристрій або символьний пристрій
  • Жирний червоний з чорним фоном : сирітська посилання або відсутній файл
  • Не кольоровий з червоним фоном : встановити 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-терміналу

Вихід з моїм налаштуванням (спеціальні кольори та спеціальна тема терміналу Solarized):

скріншот gnome-терміналу

Я отримав описи від dircolors -pта man dir_colorsзаповнив прогалини своїми власними дослідженнями.

Кольори та описи однакові з 14.04 до 17.10.


Як ви знали rsзасоби RESET, mhзасоби MULTIHARDLINK, caзасоби CAPABILITYтощо?
Фредрік Гаус

@FredrickGauss Як я писав у відповіді, я отримав описи від запуску dircolors -p.
wjandrea

dircolors -pне говорить rs це RESET 0 # скинути до "нормального" кольору .
Фредрік Гаус

@FredrickGauss Не явно, але "RESET" є єдиним, який можна скоротити як "rs", а колір (0) відповідає.
wjandrea

18

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

Введіть, dircolors -p |lessщоб побачити свій поточний код кольору.

За замовчуванням .bashrc повинен бути налаштований не лише для використання системного коду кольорів, але і для одного в ~ / .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) із кольоровим сценарієм та додатком ;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. Просто киньте числа в рядок і насолоджуйтесь простотою.

Дякую Дену і Зеебі за їх замітки та код.


будь ласка, перевірте, чи 256 кольорів працюватимуть лише на терміналах, сумісних з xterm . Отже, 256 кольорів для мене не працюють з Konsole, але працюють з xterm та rxvt-unicode .
ДК Бозе

1
Консоле робить свою справу. Ознайомтеся з draculatheme.com/konsole або techoverflow.net/2013/11/08/installing-konsole-solarized-theme для приємної кольорової гами.
мерехтіння
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.