Я завжди підказую, щоб цей колір був у моєму 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. Я не впевнений, чи це було додано в попередніх версіях.