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

9

Я не знаю, почему моя сессия 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. osx: 10.9.2

У меня установлен Homebrew

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

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

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

Ответы:

3

Я бы предложил установить 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"
Dieseltime
источник
Стоит отметить, что gls (GNU ls) не включает цвет, просто определяя переменную среды CLICOLOR, как это делает команда BSD ls по умолчанию из OS X. Кроме того, ключ -G для включения цвета в BSD ls не работает для GNU ls и --color не работает для BSD ls. Вы должны определить псевдоним для ls, чтобы добавить переключатель --color, если вы хотите, чтобы все ваши команды ls были раскрашены. Для справки из «man ls» (BSD flavour): «-G Включить цветной вывод. Эта опция эквивалентна определению CLICOLOR в среде».
Марк Эдингтон
Используя gls --color после установки coreutils, я получил окраску по умолчанию, а не цвета из моего LSCOLORS var. Так как я установил свой путь по умолчанию к инструментам gnu по их обычным именам, я просто сделал rm, which lsчтобы вернуться к / bin / ls, который работал нормально. Удивительно, но это разозлило текущую оболочку, которая больше не могла найти ls, но новые оболочки работали нормально. У bash нет перефразировки, поэтому я не понимаю, почему он завис на / usr / local / opt / coreutils / libexec / gnubin / ls
Аарон Макмиллин
1

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

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