Как мне изменить цвет для каталогов с помощью ls в консоли?

На моей консоли цвет каталогов такой синий, что его трудно читать на темном фоне.

Как я могу изменить определения цвета для ls?

Чтобы изменить цвета каталога, откройте свой ~/.bashrc файл с вашим редактором

nano ~/.bashrc

и сделайте следующую запись в конце файла:

LS_COLORS=$LS_COLORS:'di=0;35:' ; export LS_COLORS

Несколько приятных цветовых решений (в данном случае 0;35 это фиолетовый цвет) являются:

Blue = 34Green = 32Light Green = 1;32Cyan = 36Red = 31Purple = 35Brown = 33Yellow = 1;33Bold White = 1;37Light Grey = 0;37Black = 30Dark Grey= 1;30

Первое число - это стиль (1 = жирный шрифт), за которым следует точка с запятой, а затем фактический номер цвета, возможные стили (эффекты) следующие:

0   = default colour1   = bold4   = underlined5   = flashing text (disabled on some terminals)7   = reverse field (exchange foreground and background color)8   = concealed (invisible)

Возможные предпосылки:

40  = black background41  = red background42  = green background43  = orange background44  = blue background45  = purple background46  = cyan background47  = grey background100 = dark grey background101 = light red background102 = light green background103 = yellow background104 = light blue background105 = light purple background106 = turquoise background107 = white background

Все возможные цвета:

30  = black31  = red32  = green33  = orange34  = blue35  = purple36  = cyan37  = grey90  = dark grey91  = light red92  = light green93  = yellow94  = light blue95  = light purple96  = turquoise97  = white

Они даже могут быть объединены, так что такой параметр, как:

di=1;4;31;42

в вашей переменной LS_COLORS каталоги будут отображаться жирным подчеркнутым красным текстом на зеленом фоне!

Чтобы протестировать все эти цвета и стили в вашем терминале, вы можете использовать один из:

for i in 00{2..8} {0{3,4,9},10}{0..7}do echo -e "$i \e[0;${i}mSubdermatoglyphic text\e[00m  \e[1;${i}mSubdermatoglyphic text\e[00m"donefor i in 00{2..8} {0{3,4,9},10}{0..7}do for j in 0 1   do echo -e "$j;$i \e[$j;${i}mSubdermatoglyphic text\e[00m"   donedone

Вы также можете изменять другие типы файлов при использовании команды ls, определяя каждый тип с помощью:

bd = (BLOCK, BLK)   Block device (buffered) special filecd = (CHAR, CHR)    Character device (unbuffered) special filedi = (DIR)  Directorydo = (DOOR) [Door][1]ex = (EXEC) Executable file (ie. has 'x' set in permissions)fi = (FILE) Normal fileln = (SYMLINK, LINK, LNK)   Symbolic link. If you set this to ‘target’ instead of a numerical value, the color is as for the file pointed to.mi = (MISSING)  Non-existent file pointed to by a symbolic link (visible when you type ls -l)no = (NORMAL, NORM) Normal (non-filename) text. Global default, although everything should be somethingor = (ORPHAN)   Symbolic link pointing to an orphaned non-existent fileow = (OTHER_WRITABLE)   Directory that is other-writable (o+w) and not stickypi = (FIFO, PIPE)   Named pipe (fifo file)sg = (SETGID)   File that is setgid (g+s)so = (SOCK) Socket filest = (STICKY)   Directory with the sticky bit set (+t) and not other-writablesu = (SETUID)   File that is setuid (u+s)tw = (STICKY_OTHER_WRITABLE)    Directory that is sticky and other-writable (+t,o+w)*.extension =   Every file using this extension e.g. *.rpm = files with the ending .rpm

Более полный список доступен по адресу Bigsoft - Настройка LS_COLORS.

В некоторых дистрибутивах вы также можете захотеть изменить цвет фона для ow "(OTHER_WRITABLE), значение которого по умолчанию нечитаемо", например, для не выделенного жирным шрифтом синего текста на зеленом фоне.

Вы могли бы использовать, например LS_COLORS="$LS_COLORS:di=1;33" в конце вашего .bashrc файл, чтобы получить хорошо читаемый жирный оранжевый текст на черном фоне.

После того, как вы измените свой файл .bashrc, чтобы изменения вступили в силу, вам придется перезапустить оболочку или запустить source ~/.bashrc.

Примечание: Вы можете комбинировать больше команд с помощью двоеточие, например

LS_COLORS=$LS_COLORS:'di=1;33:ln=36' ; export LS_COLORS; ls

Источник:

Очень просто.Добавьте эти три строки в ~/.bashrc

$ vi ~/.bashrcexport LS_OPTIONS='--color=auto'eval "$(dircolors -b)"alias ls='ls $LS_OPTIONS'

Если вы хотите применить изменения в запущенном сеансе bash, выполните:

source ~/.bashrc

В дополнение к ответу Хегази, вы действительно можете управлять цветом каталога и множеством других цветов, используя команду dircolors. Вы можете создать файл конфигурации, который хорошо документирован.

Вы можете создать файл .dircolor в своем домашнем каталоге следующим образом:

dircolors -p > ~/.dircolors

Затем в ваш файл ~/.bashrc добавьте строки

eval "`dircolors -b ~/.dircolors`"alias ls='ls --color=auto'

Это создаст переменную $LS_COLORS для bash. Флаг -c установит значение if для csh. Он также помечает команду ls для отображения в цвете.

Отредактируйте значение атрибута DIR, как указано выше, в файле ~/.dircolor color, чтобы изменить цвет каталога (или любого из других включенных типов файлов для других цветов).Вы также можете изменить цвета определенных файлов или определить свои собственные.

LS_COLORS

Это набор сопоставлений extension:color, подходящих для использования в качестве переменной среды LS COLORS.

То --color=auto опция не работает для меня, использующего iTerm2 на моем Mac. То -G однако этот вариант работает. Я ввел следующий псевдоним в свой ~/.profile и теперь каталоги окрашены и имеют завершающий / прилагается:

alias ls='ls -F -G'

Для мгновенного решения, --color=auto может не иметь никакого значения. Вариант, который вы хотите, это --color=never. Хотя передача выходного сигнала через cat (или more) также удалит окраску и быстрее наберет текст:

ls -al | cat

(Я не знаю, чья это была идея пошутить, чтобы сделать светло-голубой против светло-зеленого по умолчанию.)

Мне не нравится удалять все цвета, потому что они все еще полезны. Я предпочитаю сохранять текущие значения по умолчанию и просто удалять зеленый фон в каталогах. Для этого эффекта я просто добавляю одну строку в конец моего ~/.bashrc:

export LS_COLORS=$LS_COLORS:'ow=1;34:'

Это мой подход к команде ls с часто используемыми опциями:

добавьте следующие строки в файл с именем ~/.alias

alias ll='ls -lhF --color=auto'alias llt='ls -lht --color=auto'alias lla='ls -alF --color=auto'alias la='ls -A --color=auto'alias l='ls -CF --color=auto'alias ls="ls --color=auto"

добавьте следующие строки в ~/.bashrc

if [ -f ~/.alias ]; then    . ~/.aliasfi

Поместите нижеприведенную строку в ~/.bashrc, и все готово.

alias ls='ls --color=auto'

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

PS1='\[\033[1;36m\]\u\[\033[1;31m\]@\[\033[1;32m\]\h:\[\033[1;35m\]\w\[\033[1;31m\]\$\[\033[0m\] '

Яркий делает процесс изменения lsцвета приятные и легкие.

Установите с помощью:

wget "https://github.com/sharkdp/vivid/releases/download/v0.7.0/vivid_0.7.0_amd64.deb"sudo dpkg -i vivid_0.7.0_amd64.deb

Используйте [Генератор LSCOLORS](LSCOLORS Generator /); установите и экспортируйте LSCOLORS в rc вашей оболочки.

Связанный с этим вопрос: Как мне удалить цвета фона для каталогов?