Что означают разные цвета в лс?
Что делают разные цвета в Ubuntu ls
командование значит? Например, когда я печатаю ls
команда в одной из моих папок, я получаю один из файлов светло-зеленым, другой (который является папкой) синим цветом с зеленой подсветкой.
Что означают эти цвета, и есть ли руководство по всем цветам?
5 ответов
- Синий: каталог
- Зеленый: исполняемый или распознанный файл данных
- Небесно-голубой: Символическая ссылка
- Желтый с черным фоном: устройство
- Розовый: файл графического изображения
- Красный: архивный файл
- Красный с черным фоном: Неработающая ссылка
Довожу до вашего сведения:
Чтобы выключить цвет, вы должны закомментировать следующие строки в
.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
в терминале.
Вы можете узнать, какие цвета ls
использует, глядя на $LS_COLORS
переменная:
- Бирюзовый: аудио файлы1
- Ярко-красный: архивы и сжатые файлы2
- Фиолетовый: картинки и видео3
Кроме того, файлы раскрашены по атрибутам:
aac, au, flac, mid, midi, mka, mp3, mpc, ogg, ra, wav, axa, oga, spx, xspf.
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, рз.
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
) просматривает все имена файлов и сначала пытается сопоставить различные типы, такие как Исполняемый файл, Труба и так далее. Затем он пытается сопоставить регулярные выражения, такие как *.wav, и печатает полученное имя файла, заключенное в эти инструкции по изменению цвета для bash.
Это расширяет ответ 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.
Если вы печатаете dircolors
(echo $LS_COLORS
также работает) из командной строки вы получите список кодов и цветов для большого количества типов файлов в 1 строке. dircolors --print-database
показывает им по 1 строке за раз. Вот краткий список (я постарался указать самые важные). Внизу есть объяснение того, что представляют собой разные коды в конце каждой строки:
NORMAL 00 # глобальное значение по умолчанию, хотя все должно быть чем-то. ФАЙЛ 00 # обычный файл DIR 01;34 # директория LINK 01;36 # символическая ссылка. (Если вы установите значение 'target' вместо числового значения #, цвет будет таким же, как для указанного файла.) FIFO 40;33 # pipe SOCK 01;35 # socket DOOR 01;35 # door BLK 40;33;01 # драйвер устройства блока CHR 40;33;01 # драйвер устройства символа ORPHAN 40;31;01 # символическая ссылка на несуществующий файл или нестабильный файл SETUID 37;41 # файл, который установлен (u+s) SETGID 30;43 # файл, который является setgid (g+s) STICKY_OTHER_WRITABLE 30;42 # каталог, который является липким и доступным для записи (+t,o+w) OTHER_WRITABLE 34;42 # каталог, который является другим записываемым (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
файл станет постоянным.
Ни один из ответов здесь не включает 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 вещи. Просто бросьте цифры в строку и наслаждайтесь простотой.