Я всегда подсказываю, чтобы этот цвет был в моем Linux. Тогда я могу найти свой ввод в черном командном окне. Но можем ли мы сделать такой же цвет в моем Powershell ?
Я всегда подсказываю, чтобы этот цвет был в моем Linux. Тогда я могу найти свой ввод в черном командном окне. Но можем ли мы сделать такой же цвет в моем 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 Core вы можете использовать "`e"
escape-последовательность. Благодаря комментарию asherber.
Это означает, что вы можете, например, использовать следующую 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
.
1;37m
это то же самое 97m
, что означает «ярко-белый»)
[char]27
. Я не уверен, было ли это добавлено в более ранних версиях.