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
.