Как настроить Mac Terminal на вывод цветного ls?

336

Как настроить Mac Terminal на вывод цветного ls? Я использую MacOS 10.5

bmike
источник
5
Это отличный вопрос ... Я всегда ожидал, что ls --color (a la gnu ls) будет работать везде. MacOS не принимает --color, поэтому я предположил, что у него вообще не было цветного вывода.
Арментаж

Ответы:

370

Редактировать:

~/.bash_profile

или же

~/.profile

и добавьте следующую строку, чтобы просто включить вывод цвета через ls:

export CLICOLOR=1

Для того, чтобы настроить расцветку проявленные lsвы можете по желанию добавить эту переменную LSCOLORS.

Примеры

  • По умолчанию

    export LSCOLORS=ExFxCxDxBxegedabagacad
  • Вы можете использовать это, если вы используете черный фон

    export LSCOLORS=gxBxhxDxfxhxhxhxhxcxcx
  • Если вы хотите имитировать цвета типичного терминала Linux:

    export LSCOLORS=ExGxBxDxCxEgEdxbxgxcxd

После того как вы добавляете выше либо ~/.bash_profileили ~/.profileвы можете либо выход из системы / Логин или подключим файл в оболочке, например , для :

$ . ~/.bash_profile

ПРИМЕЧАНИЕ. Если вам нужна помощь в выборе цветов, вы можете использовать этот онлайн-инструмент под названием LSCOLORS Generator .

ОДС
источник
Есть ли способ заставить цветной текст не выглядеть жирным?
MemphiZ
1
@JamieCook Я считаю цвета Микулаша более последовательными. В частности, битая символическая ссылка должна быть темно-красной. С вашими красками синего цвета ... это не маленькая проблема.
Рэй Фосс
1
Не работает на Mac Sierra и позже
Stevie G
1
@RayFoss действительно, это не маленькая проблема, но OS X не может сделать разницу между действительными и неработающими символическими ссылками по умолчанию. Единственная жизнеспособная альтернатива - использовать gnu ls
Ciprian Tomoiagă
2
@ SteveieG Работает для меня в Высокой Сьерре. Убедитесь, что вы установили это правильно: echo $CLICOLORдолжен дать 1?
Франклин Ю
192

Можете добавить

alias ls='ls -G'

чтобы ~/.bash_profileполучить цветной lsвывод.

Барри Уарк
источник
41
Мой псевдоним ls = "ls -Gp" - -p добавляет косую черту после каждого каталога. Для меня это обеспечивает гораздо большую визуальную дифференциацию, что полезно.
Куинн Тейлор
39
Я вижу ваш -pи поднимаю вам, -Fкоторый в дополнение помещает *после исполняемых файлов, |после каналов, @после символических ссылок, и так далее.
25
Просто для удовольствия, добавьте -h, который отформатирует размеры в «удобочитаемых» единицах, то есть 100b 10k, 23m, 4.2g
Armentage
3
Если у вас еще нет файла .bash_profile в ~ / .bash_profile, убедитесь, что он создан, чтобы он работал. Сделайте это с "source ~ / .bash_profile"
y3sh
2
Не знаю, изменилось ли это с 2011 года, но вы можете заменить псевдоним export CLICOLOR=1на то же самое.
Дэвид Лорд
25

Я считаю, что все, что мне действительно нужно, это добавить это к моему ~/.bash_profile

export CLICOLOR=1
Filype
источник
Или ~/.bashrc.
Крис Пейдж
не похоже на работу на капитана):
drevicko
1
Работал как босс в El Captian для меня, спасибо за публикацию @Filype
fusion27
Вы должны либо: 1. закрыть свой терминал и снова открыть, 2. выделить файл конфигурации: . ~/.bash_profileили 3. выйти / войти
slm
13

Если вам нужна читаемая цветовая схема Mac OS X Terminal, вы можете посмотреть на это:

Я использую это уже больше года, и я не смогу работать без него!

Вот обновленная ссылка:

Джефф
источник
6
Начиная с Mac OS X Lion 10.7, Terminal позволяет настраивать цвета ANSI, поэтому использование SIMBL или других расширений больше не требуется. Он также поддерживает 256 цветов.
Крис Пейдж
12

Также вы можете настроить цвет подсказки (и ее формат), добавив:

PS1='\[\e[0;33m\]\h:\W \u\$\[\e[m\] '

к ~/.bash_profileили ~/.profileфайл. Где 0;33обычный желтый, который хорошо смотрится в моем черном / полупрозрачном окне терминала.

Вот полный список цветов и их объяснения: https://wiki.archlinux.org/index.php/Color_Bash_Prompt

Мое классное окно терминала

nacho4d
источник
8

Другой вариант - использовать GNU, lsкоторый является частью программы 'coreutils'.

Вы можете получить его через Rudix или Homebrew ( brew info coreutils) или Macports или Fink. Это может быть предпочтительнее использования решения «только для Mac OS X», если вы используете одни и те же файлы конфигурации оболочки в разных системах или уже знакомы с GNU ls.

Ти Джей Луома
источник
7

Лично я использую Oh My Zsh для добавления цвета и других трюков в мой терминал. Я думаю, что это самый простой способ.

oh-my-zsh - это среда с открытым исходным кодом, управляемая сообществом, для управления вашей конфигурацией Zsh.

Он поставляется в комплекте с кучей полезных функций, помощников, плагинов, тем и нескольких вещей, которые заставляют вас кричать ...

введите описание изображения здесь

StrawHara
источник
4

Просто добавьте следующую строку в ~/.bash_profileфайл:

export PS1=" \[\033[34m\]\u@\h \[\033[33m\]\w\[\033[31m\]\[\033[00m\] $ "

Предварительный просмотр: введите описание изображения здесь

Это мои любимые цвета. Вы можете настроить цвет каждой части приглашения, изменив mкоды (например 34m), которые являются цветовыми кодами ANSI.

Список цветовых кодов ANSI:

  • Черный: 30 м
  • Красный: 31м
  • Зеленый: 32м
  • Желтый: 33м
  • Синий: 34м
  • Фиолетовый: 35м
  • Голубой: 36м
  • Белый: 37м
Шаян Амани
источник
4

Объединяя все ответы, вот что я использую:

COLOR_RED="\033[0;31m"
COLOR_YELLOW="\033[0;33m"
COLOR_GREEN="\033[0;32m"
COLOR_OCHRE="\033[38;5;95m"
COLOR_BLUE="\033[0;34m"
COLOR_WHITE="\033[0;37m"
COLOR_RESET="\033[0m"

#git_color
function git_color {
  local git_status="$(git status 2> /dev/null)"

  if [[ ! $git_status =~ "working directory clean" ]]; then
    echo -e $COLOR_RED
  elif [[ $git_status =~ "Your branch is ahead of" ]]; then
    echo -e $COLOR_YELLOW
  elif [[ $git_status =~ "nothing to commit" ]]; then
    echo -e $COLOR_GREEN
  else
    echo -e $COLOR_OCHRE
  fi
}

#git_branch
function git_branch {
  local git_status="$(git status 2> /dev/null)"
  local on_branch="On branch ([^${IFS}]*)"
  local on_commit="HEAD detached at ([^${IFS}]*)"

  if [[ $git_status =~ $on_branch ]]; then
    local branch=${BASH_REMATCH[1]}
    echo "($branch)"
  elif [[ $git_status =~ $on_commit ]]; then
    local commit=${BASH_REMATCH[1]}
    echo "($commit)"
  fi
}

PS1='\[\033[01;32m\]\u\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]'
PS1+="\[\$(git_color)\]"        # colors git status
PS1+="\$(git_branch)"           # prints current branch
PS1+="\[$COLOR_BLUE\]\[$COLOR_RESET\]\$ "
export PS1

export LC_ALL=en_US.UTF-8
export CLICOLOR=1
export LSCOLORS=gxBxhxDxfxhxhxhxhxcxcx
alias ls="ls -Gp"

введите описание изображения здесь

Sand1512
источник
3

Забудьте все эти десятилетние загадочные коды для черт возьми, используйте встроенную панель «Терминал -> Настройки», чтобы установить обложку по умолчанию, и отредактируйте цвета ANSI по своему вкусу. Вы также можете установить шрифт. Я предпочитаю Менло 12pt. Это то, как любой обычный Джо может сделать это, и избежать всего сумасшедшего командной строки, Unix-esque способ делать вещи, как предлагали другие авторы.

Джефф Хоффман
источник
12
Я думаю, что любой, кто достаточно опытен, чтобы даже знать, что lsможет иметь цветной вывод, также может запустить несколько команд Unix, чтобы правильно его настроить.
холме
7
Но это просто заставляет ls показывать в одном цвете, но не делает ссылки, каталоги, файлы отображаются в разных цветах, как это может сделать ls
Mark