Я завжди підказую, щоб цей колір був у моєму 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"
замість цього можна використовувати послідовність втечі. Завдяки коментарю asherber.
Це означає, що ви можете, наприклад, використати наступну послідовність евакуації, щоб встановити колір тла, щоб синяти з кодом 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
.
1;37m
це те саме 97m
, що обоє означають "яскраво-білий")
[char]27
. Я не впевнений, чи це було додано в попередніх версіях.