Как изменить цвет вывода команды ls в терминале в OS X и iTerm2?

Как изменить цвет вывода команды ls в терминале в OS X и iTerm2?

Я знаю, что подобный вопрос задавался здесь:

Как раскрасить вывод ls?

хотя я не совсем понял ответ и не смог его реализовать.

Однако я попробовал что-то другое. Я решил прочитать страницу руководства, lsи там упоминаются различные переменные среды, которые можно задать при работе с lsкомандой. Если перейти к -Gопции, там говорится, что нужно посмотреть CLICOLORпеременные среды. Я так и сделал.чтоone ссылается на документацию по LSCOLORSпеременной окружения. Я зашел туда и там упоминается:

«Значение этой переменной описывает, какой цвет использовать для какого атрибута, когда цвета включены с помощью CLICOLOR. Эта строка представляет собой конкатенацию пар формата fb, где f — цвет переднего плана, а b — цвет фона».

Также упоминается, что значение LSCOLORS по умолчанию — "exfxcxdxbxegedabagacad", и что каждая часть определяет цвет определенной вещи в команде ls. Например, первая пара ex в example определяет цвет каталогов. вторая fx — цвет символических ссылок и т. д. e означает синий, а x означает «передний план» по умолчанию.

1) Во-первых, что это значит: «когда цвета включены с помощью CLICOLOR»?

2) Что делает"передний план"иметь в виду?

Какими должны быть переменные окружения, чтобы lsкоманда могла раскрасить вывод так, как мне нужно?


Я также попробовал:

ls --color

Но он выдал мне следующую ошибку:

ls: illegal option -- - usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]

Та же ошибка произошла, когда я это сделал ls --color=auto: он сам по себе также выдает ошибку. Я понятия не имею, почему, и не уверен, было ли это из-за iTerm2 или OS X или почему это произошло. Кажется, это работает на других системах...

решение1

Пытаясь ответить на свой вопрос, я пробовал разные варианты, и все получилось путем экспериментов.

1) Я предполагаю, что «включение CLICOLOR» означает установку его в 1 (т.е. true), потому что как только я установил эту переменную в 1, LSCOLOR начал работать.

2) В этом контексте "Foreground" означает фоновую подсветку, которую он будет применять. Например, bc для первой пары означает, что он окрасит символы для каталогов в красный цвет, а фон/подсветка для него будет зеленым. Например, если ваша переменная окружения выглядит так: export LSCOLORS="bCfxcxdxbxegedabagacad"

то выполнение ls покажет что-то вроде этого:

введите описание изображения здесь

Очевидно, чтобы это работало, команда ls должна иметь псевдоним ls -G (или просто выполнять ls -G каждый раз), и в вашем .bashrc или любом другом rc-файле оболочки, который вы используете, должны быть следующие строки:

export CLICOLOR=1
export LSCOLORS="gxfxcxdxbxegedabagacad"

Теперь вы можете изменить LSCOLORS по своему усмотрению, как указано в файле man ls.

Возможно, есть разные способы заставить это работать, но вот как это сработало у меня в Unix в OS X Mavericks на iTerm2.

решение2

Заменить --colorна -Gпри запуске ls.

Связанный контент