Есть ли способ для командной строки и вывода быть разных цветов? Например, я играл со значением PS1, поэтому мое приглашение отображается красным цветом, но я бы хотел, чтобы командная строка была зеленого цвета, а вывод - белым (например: если я наберу "ls", это будет зеленым, и тогда список файлов будет в белом).
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' на любой понравившийся вам цвет.
Вам нужно, чтобы оболочка или программа выдавали соответствующую escape-последовательность для изменения цвета после нажатия клавиши ввода.
Оболочка bash, используемая в текущей OS X, не имеет очевидных возможностей для этого.
Вы можете связать другой ключ, чтобы отправить escape-последовательность и возврат.
- В настройках терминала нажмите на панель «Настройки», затем на вкладку «Клавиатура».
- Нажмите кнопку плюс.
- Выберите модификатор и ключ. Установите действие для
send string to shell
а строку -\033[m\015
. Нажмите ОК.
Вам придется привыкнуть к использованию этого сочетания клавиш вместо возврата … хотя, вероятно, есть приложение, которое позволит системе рассматривать возврат в Терминале как этот альтернативный ярлык.