Подтвердить что ты не робот

Цвет для PROMPT (только собственно PROMPT) в cmd.exe и PowerShell?

Итак, в Bash вы просто настраиваете PS1 для добавления цветов в приглашение. Я говорю о правильности строки, а не о цвете переднего плана (текста) или фона. И это действительно легко в Bash, и это очень помогает, если вам нужно найти свои команды в море беспорядочного вывода текста.

Можете ли вы достичь того же значения для cmd.exe или в качестве резервной копии для PowerShell? Цветной запрос?

Я не знаю, можно ли это сделать в старые времена перед Win32, загрузив ANSI.SYS. Я думаю, это было просто для того, чтобы сделать передний план и фон ярким. Но я могу ошибаться. И все же, эти дни ушли, и в наше современное время (я знаю) мы используем cmd.exe или PowerShell.

Я знаю, что cmd.exe и PowerShell способны выполнять цветной вывод. Для cmd.exe просто запустите color /?, чтобы узнать. Но мой вопрос не в том, что на первый план и на фоне, что все известно человечеству - это просто изменение цвета подсказки для cmd.exe, возможно, с помощью переменной среды PROMPT, как через переменную PS1 для Bash? Возможно ли это?

И нет, Cygwin не является альтернативой для этого. Я пользователь Cygwin с MinTTY и все, и мне это нравится. Но я все еще хочу, чтобы мой приглашение cmd.exe тоже окрашивалось.

4b9b3361

Ответ 1

перейдите по этой ссылке. Там был взломан ANSI для оболочки CMD.exe

ссылка на ansi hack

Я пробовал это на своем профессиональном SP1 с выигрышем 7 и работает как шарм

enter image description here

Ответ 2

Вы можете добавить функцию подсказки в свой профиль в Powershell, чтобы в значительной степени сделать все, что захотите, с подсказкой. Так например, что-то вроде этого:

function prompt
{
    Write-Host "PS $(get-location)>"  -nonewline -foregroundcolor Magenta
    return ' '
}

Чтобы открыть или создать свой профиль PowerShell, запустите это:

if(Test-Path $profile){notepad $profile}else{New-Item -path $profile -type file -force}

Ответ 3

Это хорошая информация, но важная вещь, которую я не рассматривал, заключается в том, как создавать пользовательские подсказки при каждом запуске командной строки. В старых Windows, таких как XP и раньше, вы должны поместить переменную среды PROMPT в файл AUTOEXEC.BAT, но в Windows 7 - Windows 10, вы сделали бы ее постоянной следующим образом:

  • Откройте приглашение Run, используя Windows key + R
  • Введите "systempropertiesadvanced" (без кавычек) и нажмите ENTER
  • Откроется диалоговое окно "Свойства системы" (вы также можете щелкнуть правой кнопкой мыши "Мой компьютер" и выбрать "Свойства", чтобы получить это)
  • Выберите вкладку "Дополнительно" вверху
  • Выберите "Переменные среды" в нижней части
  • В нижней области в области "Системные переменные" посмотрите и посмотрите, есть ли у вас в настоящее время переменная "Prompt" (капитализация не имеет значения).
  • Если это так, отредактируйте переменную приглашения, и ваши изменения будут постоянными.
  • Если нет, нажмите "Создать" рядом с нижним и для имени переменной, введите PROMPT и значение переменной, что бы вы ни хотели. Запрос по умолчанию имеет переменное значение $P $G
  • Нажмите "ОК"
  • Запустите командную строку для проверки
  • DONE
  • Примечание. Я использую пользовательскую командную строку, которая выглядит как флаг штата Техас. Значение переменной для этого: $e[1;44m*$e[41m▀▀$e[0;1m $P$G

(Белая полоска сделана, удерживая нажатой клавишу ALT и набрав 223 на клавиатуре справа. В этом запросе есть два из этих символов.)

Ответ 4

Вы можете использовать несколько цветов (очень полезно для идентификации компонентов вашей подсказки, типичных в Unix):

function prompt {
    Write-Host ("@") -NoNewLine -ForegroundColor Magenta
    Write-Host ("$env:COMPUTERNAME") -NoNewLine -ForegroundColor Green
    Write-Host (":") -NoNewLine -ForegroundColor Magenta
    Write-Host ($(Get-Location)) -NoNewLine -ForegroundColor Green
    Write-Host (">") -NoNewLine -ForegroundColor Red
    return " "
}

enter image description here

(COMPUTERNAME здесь явно записано, но на самом деле его заменяет значение переменной среды).

И вы можете добавить случайные цвета (взятые из здесь; у этого есть аналогичная версия, у обоих есть другие очень интересные хитрости):

function prompt
{
    $random = new-object random
    $color=[System.ConsoleColor]$random.next(1,16)
    Write-Host ("PS " + $(get-location) +">") -nonewline -foregroundcolor $color
    return " "
}

Ответ 5

Основываясь на ответе @KriZ, escape-последовательности ANSI прекрасно работают в Windows 10 cmd.exe с 2019 года. Не нужно было явно вызывать ansi.sys или копировать какие-либо файлы. Он просто работал из коробки в Windows 10.

Например,

set PROMPT=$E[1;37m[[email protected]:$E[1;35m$P ]$$ $E[1;37m

Производит:

example colored prompt

(Обратите внимание на пробел после финала $)

Все, что перед диском, выделено жирным белым цветом, а диск/папка - жирным розовым, а все, что осталось после финального $, - жирным белым.

Формат для цветов:

$E[bold_or_not;colorm

С т всегда после номера цвета. bold_or_not = 0 или 1. Вот руководство по цветам:

0     Turn Off Attributes
1     High Intensity
2     Normal Intensity
4     Underline (mono only)
5     Blink
7     Reverse Video
8     Invisible
30    Black
31    Red
32    Green
33    Yellow
34    Blue
35    Magenta
36    Cyan
37    White
40    Black
41    Red
42    Green
43    Yellow
44    Blue
45    Magenta
46    Cyan
47    White

Цвета Источник: https://kb.iu.edu/d/aamm