Як розфарбувати підказку Powershell?


17

Я завжди підказую, щоб цей колір був у моєму Linux, тоді я можу знайти свій вхід у чорному вікні команди. Але чи можемо ми зробити такий же колір у моєму Powershell ?


Що таке шрифт консолі?
Дмитро Кудрявцев

@DmitryKudriavtsev Подивіться це , може бути , це Сим пісня англійською мовою.
йоде

Можливо, це SimSun?
Дмитро Кудрявцев

@DmitryKudriavtsev Так, вибачте, я помилився.
йод

не ваша вина, транслітерація - це важко
Дмитро Кудрявцев

Відповіді:


32

скріншот кольорового запиту

Підказки 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"замість цього можна використовувати послідовність втечі. Завдяки коментарю asherber.


Використання в PowerShell

Це означає, що ви можете, наприклад, використати наступну послідовність евакуації, щоб встановити колір тла, щоб синяти з кодом 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"

Для отримання додаткової інформації зверніться до документації .

Насправді це все прямо еквівалентно тому, що ви робите в баші, за винятком того, що вам потрібно використовувати $ESC(після того, як ви це визначили) замість \eабо \033.


Встановлення кольорового підказки

Збираючи їх разом, ми можемо використовувати коди виходу кольорів ANSI у модифікованому запиті для зміни кольору фону:

function prompt  
{  
    $ESC = [char]27
    "$ESC[46mPS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) $ESC[0m"  
}

Наполегливість

Якщо ви хочете, щоб це зберігалося протягом сеансів, додайте його у свій профіль (як .bashrc). Ви можете переглянути шлях до свого профілю в $profile.


Привіт ~, це чудова відповідь. Але далі, ми могли б зробити текст жирним стилем ? Тоді ми можемо знайти його легше ..
yode

1
@yode Це більш-менш все задокументоване тут , з чим я пов’язаний у відповіді;)
Боб

1
@yode Ах. Якщо порівнювати 37 неяскравих білих кольорів, схоже, що у вікнах PowerShell вже використовується 97 яскраво-білих кольорів. (btw, там буде нова кольорова палітра для чистих встановлень наступної версії Win10. Там є деякі скріншоти поточної палітри ; зауважте, що 1;37mце те саме 97m, що обоє означають "яскраво-білий")
Боб

1
@yode В основному, conhost ще не підтримує жирного. Яскравий - це заміна жирному, і ви вже використовуєте яскравий колір за замовчуванням. Якщо ви дійсно хочете жирного шрифту , ви можете використовувати альтернативний термінал, такий як ConEmu - але схоже, що їх підтримка для ANSI жирного шрифту також не повна. ІМО, це не варто турбуватися.
Боб

1
Я не можу змусити Markdown працювати правильно, але в PowerShell Core ви можете використовувати backtick + e for [char]27. Я не впевнений, чи це було додано в попередніх версіях.
ашербер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.