15

Я всегда стараюсь быть таким цветом в моем Linux Затем я могу найти свой ввод в черном командном окне. Но можем ли мы сделать такой же цвет в моем Powershell?

1 ответ1

27

скриншот цветной подсказки

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 .

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