
Estou executando o Windows 10 e desejo configurar o prompt cmd.exe de forma que pareça igual ao meu prompt bash na mesma máquina. Eu configurei um script de inicialização para definir a variável PROMPT ao carregar o cmd.exe, que detecta se o shell está sendo executado com privilégios de root e configura a cor de acordo:
No entanto, como mostrado na captura de tela, não consigo configurar o prompt em cmd.exe (as janelas superiores) de forma que a cor seja redefinida para o padrão após a conclusão do comando, conforme mostrado no bash (as janelas inferiores). Se eu executar o bash a partir do cmd, a cor também não poderá ser redefinida.
Então eu executo ls com cores em ambos os shells, se eu rodar no cmd, ou bash dentro do cmd, a cor não pode ser redefinida pelo arquivo normal. No entanto, se eu executá-lo apenas no bash, a cor poderá ser redefinida.
Como posso configurar meu script de inicialização de forma que o comportamento das cores do cmd.exe seja idêntico ao do meu shell bash?
Responder1
Existem alguns recursos experimentais mais recentes no console do Windows 10 que o tornam muito mais parecido com o *NIX. Por exemplo, cores que não estão mais restritas às 16 disponíveis até agora, formatos de cursor, etc.
Ele é configurado nas janelas de propriedades como antes:
Mais detalhes podem ser encontrados aqui:
https://devblogs.microsoft.com/commandline/new-experimental-console-features/
Responder2
Uma opção seria usarConEmu (personalizadoconemu.xml
)como gerenciador de terminal, pois permite a personalização completa do terminal, combinado com o Powershellprofile.ps1
cmd
comandos específicos podem ser executados no Powershell prefaciando o comando comcmd /c
%UserProfile%\Documents\WindowsPowerShell\profile.ps1
#
##::[[--- PowerShell PS1 Profile ---]]::##
#================================================================
# Parameters
#----------------------------------------------------------------
# ANSI:
$ESC = [char]27
# Host.PrivateData
$PD = $($Host.PrivateData)
# Colors
#----------------------------------------------------------------
# Powershell
$Host.UI.RawUI.BackgroundColor = ($bckgrnd = 'Black')
$Host.UI.RawUI.ForegroundColor = 'Gray'
$PD.ErrorForegroundColor = 'Red'
$PD.ErrorBackgroundColor = $bckgrnd
$PD.WarningForegroundColor = 'Magenta'
$PD.WarningBackgroundColor = $bckgrnd
$PD.DebugForegroundColor = 'Yellow'
$PD.DebugBackgroundColor = $bckgrnd
$PD.VerboseForegroundColor = 'Green'
$PD.VerboseBackgroundColor = $bckgrnd
$PD.ProgressForegroundColor = 'Yellow'
$PD.ProgressBackgroundColor = $bckgrnd
#Clear-Host
# Prompt
#----------------------------------------------------------------
Function set-prompt {
Param (
[Parameter(Position=0)]
[ValidateSet("Default","Test")]
$Action
)
switch ($Action) {
"Default" {
Function global:prompt {
if (test-path variable:/PSDebugContext) { '[DBG]: ' }
write-host " "
write-host ("$ESC[48;2;40;40;40m$ESC[38;2;170;210;0m$(Get-Location) $ESC[0m $ESC[0m")
if ( $host.UI.RawUI.WindowTitle -match "Administrator" ) {
$Host.UI.RawUI.ForegroundColor = 'Red'
$(if ($nestedpromptlevel -ge 1) {
write-host ('PS $$ ') -ForegroundColor Red -NoNewLine
} else {
write-host ('PS $ ') -ForegroundColor Red -NoNewLine
})
} else {
$(if ($nestedpromptlevel -ge 1) {
write-host ('PS $$ ') -ForegroundColor Blue -NoNewLine
} else {
write-host ('PS $ ') -ForegroundColor Blue -NoNewLine
})
}
return " "
}
}
"Test" {
function prompt() {
if ( Test-Wow64 ) {
write-host -NoNewLine "Wow64 "
}
if ( Test-Admin ) {
write-host -NoNewLine -f red "Admin "
}
write-host -NoNewLine -ForegroundColor Green $(get-location)
foreach ( $entry in (get-location -stack)) {
write-host -NoNewLine -ForegroundColor Red '+';
}
write-host -NoNewLine -ForegroundColor Green '>'
' '
}
}
}
}
set-prompt Default
- Mostra um texto coloridoincitarpara o usuário e um prompt de texto vermelho para um administrador
- Permite a troca instantânea de perfis(recarregar/trocar prompt via
set-prompt <name>
)- Copie/cole
Default
a seção abaixo dela e edite de acordo(verTest
)
- Copie/cole
O novo da Microsoftterminaltambém é altamente personalizável a partir de seu .json
arquivo de configuração, mas o ConEmu é mais fácil de personalizar e executar vários shells.