Что означают различные цвета в команде ls
в Ubuntu? Например, когда я набираю команду ls
в одной из моих папок, я получаю один из файлов светло-зеленым, другой (который является папкой) синим с зеленой подсветкой.
Что означают эти цвета, и есть ли руководство по всем цветам?
К вашему сведению:
Чтобы выключить цвет, необходимо прокомментировать следующие строки в .bashrc
.
# включите поддержку цвета ls, а также добавьте удобные псевдонимы
#if [ -x /usr/bin/ircolors ]; тогда
# тест -r ~/.dircolors && оценивает "$(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 writeable;ow:other writeable;st:sticky;ex:ex:executable;"|sed -e 's/:/="/g; s/\;/"\n/g')
{
IFS=:
для i в $LS_COLORS
делать
echo -e "\e[${i#*=}m$( x=${i%=*}; [ "${!x}" ] && echo "${!x}" || echo "$x" )\e[m]
готовый
}
Выход:
Примечание:
man dir_colors
в терминал.Это расширяет ответ Karthick87 .
ls -l
) или файл с несколькими жесткими ссылками Обратите внимание, что жирный красный выглядит оранжевым, черный выглядит темно-серым, голубой выглядит синим / зеленым, а жирный пурпурный выглядит фиолетовым / розовым / лавандовым.
#!/bin/bash
# For LS_COLORS, print type and description in the relevant color.
declare -A descriptions=(
[bd]="block device"
[ca]="file with capability"
[cd]="character device"
[di]="directory"
[do]="door"
[ex]="executable file"
[fi]="regular file"
[ln]="symbolic link"
[mh]="multi-hardlink"
[mi]="missing file"
[no]="normal non-filename text"
[or]="orphan symlink"
[ow]="other-writable directory"
[pi]="named pipe, AKA FIFO"
[rs]="reset to no color"
[sg]="set-group-ID"
[so]="socket"
[st]="sticky directory"
[su]="set-user-ID"
[tw]="sticky and other-writable directory"
)
IFS=:
for ls_color in $LS_COLORS; do
color="${ls_color#*=}"
type="${ls_color%=*}"
# Add description for named types.
desc="${descriptions[$type]}"
# Separate each color with a newline.
if [[ $color_prev ]] && [[ $color != "$color_prev" ]]; then
echo
fi
printf "\e[%sm%s%s\e[m " "$color" "$type" "${desc:+ ($desc)}"
# For next loop
color_prev="$color"
done
echo
Вывод с настройками по умолчанию:
Вывод с моими настройками ( пользовательские dircolors и пользовательская тема Solarized терминала ):
Я получил описания из dircolors -p
и man dir_colors
, и заполнила пробелы моими собственными исследованиями.
Цвета и описания такие же с 14.04 по 17.10.
Ни один из ответов здесь не включает 256 вариантов цвета в последней версии. ионы Ubuntu. У меня дефицит цвета (некоторые цвета создают проблемы рядом друг с другом), поэтому синий каталог по умолчанию на черном мне очень трудно читать. Ниже приводится мое исследование, чтобы изменить это.
Введите dircolors -p | less
, чтобы увидеть текущий цветовой код.
. По умолчанию .bashrc уже должен быть настроен не только для использования системного цветового кода, но и для использования в ~ / .dircolors, поэтому выгрузите вывод dircolors в .dircolor, чтобы вы могли начать с этого, используя эту команду.
dircolors -p> ~ / .dircolors
Альтернатива: возьмите очень похожие 256-цветные dircolors из проекта соляризованного Сиби.
Возьмите этот скрипт тестирования цвета ] и запустите его с помощью команды 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. Просто вставьте числа в строку и наслаждайтесь простотой.
Вы можете узнать, какие цвета использует ls
, посмотрев на переменную $LS_COLORS
:
Кроме того, файлы окрашены атрибутами:
aac, au, flac, mid, midi, mka, mp3, mpc, ogg, ra, wav, axa, oga, spx, xspf.
tar, tgz, arj, taz, lzh, lzma, tlz, txz, z, Z, dz, gz, lz, xz, bz2, bz, tbz, tbz2, tz, deb, rpm, jar, rar, ace, zoo, cpio, 7z, rz.
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.
Вся эта информация содержится в выводе -диркологов --принт-базы данных
, но ее форматирование довольно нечитаемо.
Вот техническое объяснение происходящего:
Пример:
CHR 40;33;01
Цветовой код состоит из трех частей:
Первая часть перед точкой с запятой представляет собой стиль текста.
Вторая и третья части представляют цвет и цвет фона:
Каждая часть может быть опущена, предполагая, что она начинается слева, т.е. "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.
Если вы набираете -циркуляры
(echo $LS_COLORS
также работает) из командной строки вы получите список кодов и цветов для множества типов файлов в 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=нет 01=жирный 04=подчеркнутый 05=мигающий 07=обратный 08=свеченный
30=черный 31=красный 32=зеленый 33=желтый 34=синий 35=маджента 36=голубой 37=белый
40=черный 41=красный 42=зеленый 43=желтый 44=синий 45=маджента 46=голубой 47=белый
Если вы хотите поиграть с этим, вот пример того, как установить цвет для файла:
export LS_COLORS=$LS_COLORS:"*.ogg=01;35":"*.mp3=01;35"
Это установит *.ogg
и .mp3
на жирный пурпурный
. А если вы поместите его в свой файл .bashrc
, то он станет постоянным.