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


492

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

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



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 года).


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файл. Если нет, просто создайте его, и он будет автоматически получен при вашем следующем входе в систему.


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
У меня были проблемы с получением цветов 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, которые вы хотите использовать, закажите этот сайт


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.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.