Как вы определяете, что означают цвета bash ls?
Вопрос
Когда вы выполняете ls
в оболочке bash иногда используются цвета для обозначения различных типов ресурсов, и вы можете включить / контролировать это с помощью --color
аргумент.
Но ни справочная страница, ни Google не дают ответа на этот вопрос:
Что обозначают эти цвета по умолчанию и как мне отобразить то, что использует текущая система?
Обновить:
Спасибо всем за ответы на данный момент, однако, чтобы упростить выбор победителя, кто-нибудь может пойти еще дальше и предоставить метод вывода описаний в тех цветах, к которым они применимы.
Хммм...мой пример не работает при публикации (только при предварительном просмотре), поэтому, если вы предварительно просмотрите этот код, он покажет, что я имею в виду...
<ul style="list-style:none; background:black; margin:0;padding:0.5em; width:10em">
<li style="color:blue">directory</li>
<li style="color:aqua">symbolic link</li>
<li style="color:#A00000;">*.tar files</li>
<li style="color:white">...</li>
</ul>
Спасибо.
Решение
Цвета определяются с помощью $LS_COLORS
переменная среды.В зависимости от вашего дистрибутива, он генерируется автоматически при запуске командной оболочки, используя ~/.dircolors
или /etc/DIR_COLORS
.
Редактировать:
Чтобы перечислить значения цвета, используйте этот скрипт:
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
}
Другие советы
Запуск команды dircolors -p
будут напечатаны все настройки цвета по умолчанию.Видишь http://linux.about.com/library/cmd/blcmdl1_dircolors.htm.
Вы должны быть в состоянии увидеть список сопоставлений в /etc/DIR_COLORS .Вы можете переопределить это, создав файл .dir_colors в своем домашнем каталоге.
Попробуйте "man 5 dir_colors", чтобы увидеть, как он настроен в вашей системе.У моего нет /etc / DIR_COLORS, поэтому он должен быть установлен где-то в другом месте.
Погуглите для LS_ ЦВЕТА для получения некоторых полезных ссылок.
Редактировать: Чтобы перечислить цвета, этот простой скрипт bash может дать представление:
IFS=:
set $LS_COLORS
for C in $*
do
IFS='='
set $C
echo -e "\033[$2m$1\033[00m"
done