Терминал не отображает цвета для списков каталогов

Я не знаю, почему мой сеанс bash не показывает цвета. Я пробовал Терминал, а также iTerm.

Я пытался:

  1. ls -G
  2. Настройка export CLICOLOR=1иexport LSCOLORS=GxFxCxDxBxegedabagaced
  3. Использование различных тем, таких как соляризованный и что-то еще

Версии моей программы:

  1. bash: GNU bash, версия 3.2.51(1)-выпуск (x86_64-apple-darwin13)
  2. ОС: 10.9.2

У меня установлен Хоумбрю

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

редактировать: в настройках терминала у меня есть «Объявить терминал как: xterm-256color» и «Отображать цвета ANSI» вместе с «Использовать яркие цвета для полужирного текста»

Попробуйте запустить printf '\e[32mtest\n', если получится, то проблема в ls.
У меня тоже есть эта проблема. Чтобы расширить то, что вы пробовали, проблема сохраняется с командой gls coreutils. Комментарий выше успешно меняет цвет подсказки. Моя проблема связана с темой SolarizedDark, так как изменение цвета в настройках Terminal.app в других темах работает.

Ответы (2)

Я бы предложил установить GNU Core Utilities через Homebrew, что даст вам версию «Linux» ls(вместо версии FreeBSD, поставляемой с OS X), а также другие мощные инструменты.

brew update
brew install coreutils

Затем вы сможете отображать цвета с помощью:

gls --color

Кроме того, прочитайте предостережения, чтобы настроить PATH, чтобы вы могли использовать команды, например, glsс их обычными именами, например ls:

$ brew info coreutils
coreutils: stable 8.23 (bottled)
https://www.gnu.org/software/coreutils
Conflicts with: ganglia, idutils
/usr/local/Cellar/coreutils/8.23 (214 files, 10M)
  Poured from bottle
/usr/local/Cellar/coreutils/8.23_1 (214 files, 10M) *
  Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/coreutils.rb
==> Dependencies
Build: xz ✔
==> Caveats
All commands have been installed with the prefix 'g'.

If you really need to use these commands with their normal names, you
can add a "gnubin" directory to your PATH from your bashrc like:

    PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"

Additionally, you can access their man pages with normal names if you add
the "gnuman" directory to your MANPATH from your bashrc as well:

    MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"
Стоит отметить, что gls (GNU ls) не включает цвет, просто определяя переменную среды CLICOLOR, как это делает команда BSD ls по умолчанию из OS X. Кроме того, переключатель -G для включения цвета в BSD ls не работает для GNU ls, а --color не работает для BSD ls. Вы ДОЛЖНЫ определить псевдоним для ls, чтобы добавить переключатель --color, если вы хотите, чтобы все ваши команды ls были раскрашены. Для справки из "man ls" (разновидность BSD): "-G Включить раскрашенный вывод. Этот параметр эквивалентен определению CLICOLOR в среде".
Используя gls --color после установки coreutils, я получил раскраску по умолчанию, а не цвета из моего LSCOLORS var. Поскольку я изменил свой путь к инструментам gnu по умолчанию с их обычными именами, я просто сделал rm which ls, чтобы вернуться к /bin/ls, который работал нормально. Удивительно, но это разозлило текущую оболочку, которая больше не могла найти ls, но новые оболочки работали нормально. bash не имеет перефразирования, поэтому я не понимаю, почему он завис на /usr/local/opt/coreutils/libexec/gnubin/ls

В «Терминале» Temrinal > «Настройки» выберите профиль для используемого типа сеанса и проверьте на вкладке «Дополнительно», какое объявление терминала вы используете. Скорее всего выбранный не поддерживает раскраску ANSI. xterm-256color должен поддерживать то, что вы ожидаете.

Я только что проверил, терминал уже настроен на xterm-256color (обновленный вопрос, чтобы отразить эту и другую информацию)