Цвета терминала OS X [закрыто]

492

Я новичок в OS X, только что получил Mac после работы с Ubuntu Linux в течение некоторого времени. Среди многих вещей, которые я пытаюсь выяснить, это отсутствие цветов в моем окне терминала - как те, которые отображаются (в Linux) при запуске ls -laили git status...

Я просто не могу понять, как активировать цвета в моей оболочке.

sa125
источник
32
Закрыто как "не по теме", но посмотрите на теги: osx, shell, Terminal, Colours ... мне кажется, это полностью по теме. Охватывает OSX, это о оболочке, используя терминал и хочет добавить цвета. Придется отредактировать профиль bash, так что да, я бы сказал, что это по теме.
Даниэль-Джеймс W
12
Ясно по теме, это о скриптах bash.
суперсветовой
5
Закрыто, ты, должно быть, шутишь! Понятно, что это имеет смысл и ценность для многих (в основном новых) кодеров Mac. Если те, кто закрывается, серьезно относятся к тому, что это не по теме, то почему бы не перенести это, чтобы сказать SE Think Different. Я так понимаю, что поддерживает ту функцию, которая используется в других группах SE.
Cam_Aust
взгляните на этот ответ: stackoverflow.com/a/48216286/3782119
Шаян Амани

Ответы:

745

Вот решение, которое я нашел, чтобы включить глобальные цвета терминала .

Отредактируйте ваш .bash_profile(начиная с OS X 10.8) - или (для 10.7 и более ранних версий): .profileили .bashrcили /etc/profile(в зависимости от доступности) - в вашем домашнем каталоге и добавьте следующий код:

export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced

CLICOLOR=1 просто включает окраску вашего терминала.

LSCOLORS=... определяет, как раскрасить определенные элементы.

После редактирования .bash_profileзапустите Терминал и выполните изменения, выполнив:

source ~/.bash_profile

Затем перейдите Terminal > Preferences, нажмите на Profilesвкладку, а затем Textвложенную вкладку и проверьте Display ANSI Colors.

Проверено в Сьерре (май 2017 года).

LuckyMalaka
источник
21
просто сделал это, добавив его в .bash_profile, и это работает. не работает, когда я добавил его в .profile. Спасибо!
Мортен
10
Я только что отредактировал мой, /etc/profileи он работает как шарм.
Cyclonecode
2
@Morten и всем остальным, кто борется со своими профилями bash, смотрите эти ответы для объяснения и решения: stackoverflow.com/a/7780055/665488 , superuser.com/a/244990 .
Кэм Джексон
4
У dotfiles / .aliases отличное export LS_COLORSзаявление
bobobobo
16
Если вы хотите использовать те же цвета, которые использует Linux (по крайней мере, Debian и Ubuntu), используйтеLSCOLORS=ExGxFxdxCxDxDxxbaDecac
remram
125

Вы можете использовать синтаксис на основе Linux в одном из ваших сценариев запуска. Только что проверил это на коробке OS X Mountain Lion.

например. в вашей~/.bash_profile

export TERM="xterm-color" 
export PS1='\[\e[0;33m\]\u\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$ '

Это дает вам красивую цветную подсказку. Чтобы добавить цветной lsвывод, вы можете добавить alias ls="ls -G".

Чтобы проверить, просто запустите source ~/.bash_profileдля обновления вашего текущего терминала.

Дополнительное примечание о цветах: цветам предшествует escape-последовательность \eи определяется значение цвета, составленное [style;color+m]и завернутое в escape- []последовательность. например.

  • красный = \[\e[0;31m\]
  • жирный красный (стиль 1) = \[\e[1;31m\]
  • чистая окраска = \[\e[0m\]

Я всегда добавляю слегка измененную цветовую схему в корневой файл .bash_profile, чтобы сделать имя пользователя красным, поэтому я всегда четко вижу, вошел ли я в систему как пользователь root (удобно, чтобы избежать ошибок, если у меня открыто много окон терминала).

В /root/.bash_profile:

PS1='\[\e[0;31m\]\u\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$ '

Для всех моих учетных записей SSH в сети я должен указать имя хоста красным, чтобы различить, нахожусь ли я в локальном или удаленном терминале. Просто отредактируйте .bash_profileфайл в своем домашнем каталоге на сервере. Если на сервере нет .bash_profileфайла, вы можете создать его, и он должен быть получен при входе в систему.

Если это работает не так, как ожидалось, прочитайте некоторые комментарии ниже, поскольку я не очень часто использую MacOS.

Если вы хотите сделать это на удаленном сервере, проверьте, существует ли ~/.bash_profileфайл. Если нет, просто создайте его, и он будет автоматически получен при вашем следующем входе в систему.

4levels
источник
2
Как вы редактируете bash_profile для учетных записей SSH онлайн?
Энди
1
Мне нравится PS1лучше с $PWDвместо \u, как таковой:PS1=\[\e[0;31m\]$PWD\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$
Cregox
1
Вот еще несколько объяснений кодов для приглашения: wiki.archlinux.org/index.php/Color_Bash_Prompt#Step_by_step .
JohnK
1
Эти ссылки также могут быть полезны: escape-последовательности цветового кода ANSI . Подробнее о кодах PS1 .
JohnK
1
У меня были проблемы с получением цветов PROMPT_COMMAND для правильного отображения в El Capitan (OS X 10.11) с использованием этих цветовых кодов. Оказывается, при использовании в PROMPT_COMMAND, вы должны использовать \033синтаксис вместо \e. Пример добавления цветной метки времени перед вашим приглашением ( ~/.bashrc~/.bash_profilePROMPT_COMMAND="${PROMPT_COMMAND}; echo; echo -e '\033[0;35m'\[\$(date +%F\ %T)\]'\033[m'"
включите
42

Методы MartinVonMartinsgrün и 4Levels подтвердили отличную работу на Mac OS X Mountain Lion.

Файл, который мне нужно было обновить, был ~ / .profile.

Однако я не мог оставить этот вопрос без рекомендации моего любимого приложения iTerm 2 .

iTerm 2 позволяет загружать глобальные цветовые схемы из файла. Действительно легко экспериментировать и попробовать кучу цветовых схем.

Вот скриншот окна iTerm 2 и цветовых настроек. Скриншот настроек цветности iTerm2 для Mac

Как только я добавил следующее в мой файл ~ / .profile, iTerm 2 смог переопределить цвета.

export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced
export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

Вот отличный репозиторий с некоторыми хорошими пресетами:

Цветовые схемы iTerm2 на Github от mbadolato

Бонус: выберите «Показать / скрыть iTerm2 с помощью общесистемной горячей клавиши» и связать клавишу с BetterTouchTool для мгновенного скрытия / показа терминала жестом мыши.

Ник Вудхэмс
источник
1
iTerm2 часто зависал в моей системе, поэтому я переключился на oh-my-zsh github.com/robbyrussell/oh-my-zsh . Также доступны темы
LuckyMalaka
Привет! Пожалуйста, измените baskervilleссылку на соответствующую. Кажется, неправильно копировать-вставить.
Евгений Смирнов
@NickWoodhams, какую цветовую тему вы используете на скриншоте?
Индрадхануш Гупта
1
@IndradhanushGupta Не уверен, что это была за цветовая схема, это было некоторое время назад. Но сейчас я использую тему Pure ZSH и люблю ее. github.com/sindresorhus/pure
Ник Вудхэмс
1
Это хорошая цветовая схема и то, что мне нужно, чтобы проверить типы элементов // dirs и т. д.
rio
17

Если вы хотите раскрасить свой ls, вам нужно отредактировать файл ~ / .bash_profile и добавить следующую строку (если она еще не написана):

source .bashrc

Затем вы редактируете или создаете файл ~ / .bashrc и записываете псевдоним в команду ls:

alias ls="ls -G"

Теперь вам нужно ввести source .bashrcтерминал, если он уже запущен, или просто открыть новый терминал.

Если вы хотите, чтобы в вашем lsраспоряжении было больше опций, прочитайте руководство ( man ls). Опции не совсем такие же, как в системе GNU / Linux.

Марсио
источник
6
Несколько лучшим вариантом является замена определения псевдонима на экспорт CLICOLOR = "" ". Это имеет преимущество в том, что обычно продолжает работать, даже если вы переключаете оболочки во время сеанса терминала (если переменные среды наследуются, а псевдонимы - нет).
Нед Дейли
5

Если вы используете tcsh, то отредактируйте ваш ~/.cshrcфайл, включив в него строки:

setenv CLICOLOR 1
setenv LSCOLORS dxfxcxdxbxegedabagacad

Где, как говорит Мартин, LSCOLORS определяет цветовую схему, которую вы хотите использовать.

Чтобы создать LSCOLORS, которые вы хотите использовать, закажите этот сайт

smaccoun
источник
4
bashиспользуется по умолчанию в OS X с октября 2003 года.
nelsonjchen
1
Я думаю ты прав. Я только что получил новый Mac, и он по умолчанию был bash. Я думаю, он продолжал настраивать мой Mac на работе, чтобы иметь tcsh по умолчанию.
smaccoun
1
Ссылка просто потрясающая!
Санкальп
4

Проверьте, что дает $ TERM: у меня xterm-color и ls -alG, затем выводит цвет.

Уильям Роуз
источник
ну, на капитана xterm-256color, я не получаю цвета. CLICOLORи LSCOLORSне
меняй
2

Когда я работал над Mac OS X в лаборатории, я смог получить цвета терминала с помощью Terminal (а не X11), а затем редактировать профиль (из строки меню Mac). Интерфейс немного странный по цветам, но вы должны установить измененную тему по умолчанию.

Дальнейшие настройки работали путем редактирования .bashrc.

ccook
источник