Кольорові термінали OS X [закрито]


492

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

Я просто не можу зрозуміти, як активувати кольори в своїй оболонці.



32
Закрито як "off topic", але подивіться на теги: osx, shell, термінал, кольори ... мені здається, це абсолютно на тему. Охоплює OSX, мова йде про оболонці, використовує термінал і хоче додати кольори. Доведеться редагувати профіль bash, так що так, я б сказав, що це тематично.
Danijel-James W

12
Зрозуміло, що стосується теми, це стосується сценаріїв.
суперлюмінація

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 та інших, хто бореться зі своїми баш-профілями, дивіться ці відповіді для пояснення та рішення: stackoverflow.com/a/7780055/665488 , superuser.com/a/244990 .
Cam Jackson

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".

Для тестування просто запустіть a, source ~/.bash_profileщоб оновити свій поточний термінал.

Побічна примітка про кольори. Кольорам передує послідовність відходу \eта визначається значенням кольору, складеним із [style;color+m]загорнутої []послідовності та загорнутою у неї . напр.

  • червоний = \[\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\]\$
Крегокс

1
Ось ще кілька пояснень кодів підказки: wiki.archlinux.org/index.php/Color_Bash_Prompt#Step_by_step .
ДжонК

1
Ці посилання також можуть бути корисними: послідовності виходу кольорового коду ANSI . Детальніше про PS1-коди .
JohnK

1
У мене виникли проблеми з тим, щоб кольори PROMPT_COMMAND правильно відображалися в El Capitan (OS X 10.11), використовуючи ці кольорові коди. Виявляється, що при використанні PROMPT_COMMAND, вам потрібно використовувати \033синтаксис замість \e. Приклад для додавання кольорової позначки часу перед запитом (включіть це у свій ~/.bashrcабо ~/.bash_profile):PROMPT_COMMAND="${PROMPT_COMMAND}; echo; echo -e '\033[0;35m'\[\$(date +%F\ %T)\]'\033[m'"
user5359531

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термінал, якщо він вже запущений, або просто відкрити новий термінал.

Якщо ви хочете отримати більше варіантів у своєму lsjuste, прочитайте посібник ( 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, і він баш за замовчуванням. Я думаю, що ІТ продовжував налаштовувати мої комп’ютери на роботі, щоб мати tcsh за замовчуванням.
smaccoun

1
Посилання просто приголомшливе!
Санкальп

4

Перевірте, що дає $ TERM: міна xterm-кольору, а ls -alG, а потім колоризований вихід.


ну, на капітана з xterm-256color, я не отримую кольорів. CLICOLORі LSCOLORSне змінюйте цього):
drevicko

2

Коли я працював над Mac OS X в лабораторії, мені вдалося отримати термінальні кольори за допомогою терміналу (а не X11), а потім редагувати профіль (на панелі меню Mac). Інтерфейс трохи дивний за кольорами, але ви повинні встановити модифіковану тему за замовчуванням.

Подальші налаштування працювали шляхом редагування .bashrc.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.