Как раскрасить подсказку Powershell?
Я всегда стараюсь быть таким цветом в моем LinuxЗатем я могу найти свой ввод в черном командном окне. Но можем ли мы сделать такой же цвет в моем Powershell?
1 ответ
PowerShell предлагает
Что вы хотите сделать, это настроить подсказку.
Приглашение по умолчанию в PowerShell 3.0 и новее:
function prompt
{
"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
}
Последовательности выхода цвета
Теперь Windows 10 поддерживает управляющие коды ANSI в своем conhost, а 24-битный цвет поддерживается с 1703 года.
Чтобы использовать один из управляющих кодов ANSI, нам нужен буквальный символ ESC. Это восьмеричный 033 или десятичный 27. В Bash вы бы использовали "\033"
или же "\e"
; В PowerShell нет прямой эквивалентной последовательности, но вместо этого вы можете встроить выражение: "$([char]27)"
Использовать в PowerShell
Это означает, что вы можете, например, использовать следующую escape-последовательность, чтобы установить цвет фона на голубой с кодом 46
:
"$([char]27)[46m"
Который можно использовать так:
echo "$([char]27)[46mColoured text"
Чтобы сделать вещи более читабельными, давайте определим переменную:
$ESC = [char]27
Таким образом, мы можем использовать:
"$ESC[46m"
куда $ESC
это буквальный символ ESC, [
определяет начало списка параметров и m
конец.
Используя это в команде:
echo "$ESC[46mColoured text"
И чтобы восстановить исходные настройки цвета, мы используем код 0
вместо:
echo "$ESC[46mColoured text$ESC[0mUncoloured text"
Более продвинутые цвета
Если вас не устраивает базовая 16-цветная палитра, вы можете использовать полные 24-битные цвета с формой:
"$ESC[48;2;<r>;<g>;<b>m"
куда <r>
является десятичным значением для красного от 0 до 255, <g>
для зеленого и <b>
для синего, например "$ESC[48;2;255;0;123m"
Пожалуйста, обратитесь к документации для получения дополнительной информации.
На самом деле, все это прямо эквивалентно тому, что вы делаете в bash, за исключением того, что вам нужно использовать $ESC
(после того как вы определили это) вместо \e
или же \033
,
Настройка цветной подсказки
Собрав их вместе, мы можем использовать escape-коды цвета ANSI в измененном приглашении, чтобы изменить цвет фона:
function prompt
{
$ESC = [char]27
"$ESC[46mPS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) $ESC[0m"
}
Упорство
Если вы хотите, чтобы это сохранялось между сеансами, добавьте его в свой профиль (например, .bashrc
). Вы можете просмотреть путь к своему профилю в $profile
,