Есть ли способ для командной строки и вывода быть разных цветов? Например, я играл со значением PS1, поэтому мое приглашение отображается красным цветом, но я бы хотел, чтобы командная строка была зеленого цвета, а вывод - белым (например: если я наберу "ls", это будет зеленым, и тогда список файлов будет в белом).

3 ответа3

3

В конце вашего PS1 есть escape-последовательность, задающая цвет вашего ввода. Например,

PS1="\h \w$ \e[0;32m"

(все, что имеет значение, это часть \e[0;32m в конце (которая может быть любого цвета), остальное зависит от вас)

Чтобы установить выходной цвет по-разному, вам нужно "перехватить" сигнал "DEBUG" и вызвать некоторую функцию. Вот что у меня

debug()
{
  echo -n $'\e[0m';
}
trap debug DEBUG

Это не сложно, это просто гарантирует, что всякий раз, когда вы вводите команду (которая вызывает сигнал DEBUG), вызывается функция debug .

Так что просто скопируйте эти строки в ваш .bash_profile или .bashrc или все, что вы используете, и измените '\e [0m' на любой понравившийся вам цвет.

1

Вам нужно, чтобы оболочка или программа выдавали соответствующую escape-последовательность для изменения цвета после нажатия клавиши ввода.

Оболочка bash, используемая в текущей OS X, не имеет очевидных возможностей для этого.

0

Вы можете связать другой ключ, чтобы отправить escape-последовательность и возврат.

  1. В настройках терминала нажмите на панель «Настройки», затем на вкладку «Клавиатура».
  2. Нажмите кнопку плюс.
  3. Выберите модификатор и ключ. Установите действие для send string to shell а строку - \033[m\015 . Нажмите ОК.

Вам придется привыкнуть к использованию этого сочетания клавиш вместо возврата … хотя, вероятно, есть приложение, которое позволит системе рассматривать возврат в Терминале как этот альтернативный ярлык.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .