Powershell istemi nasıl renklendirilir?


17

Ben her zaman benim linux bu renk olmak istemimi yapmak Sonra siyah komut penceresinde benim giriş bulabilirsiniz. Ama Powershell'imde aynı rengi yapabilir miyiz ?


Konsol yazı tipi nedir?
Dmitry Kudriavtsev

Bakın @DmitryKudriavtsev bu Belki öyledir Sim şarkı İngilizce.
yode

Bu SimSun belki mi?
Dmitry Kudriavtsev

@DmitryKudriavtsev Evet, üzgünüm bir hata yaptım.
yode

senin hatan değil, harf çevirisi zor
Dmitry Kudriavtsev

Yanıtlar:


32

renkli istemin ekran görüntüsü

PowerShell istemleri

Yapmak istediğiniz şey istemi özelleştirmektir .

PowerShell 3.0 ve daha yeni sürümlerde varsayılan bilgi istemi:

function prompt  
{  
    "PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "  
}

Renk kaçış dizileri

Şimdi, Windows 10 , ANSI kaçış kodlarını ana gövdesinde destekliyor ve 170 bit'ten beri 24 bit renk destekleniyor.

ANSI çıkış kodlarından birini kullanmak için, gerçek bir ESC karakterine ihtiyacımız var . Bu sekizli 033 veya ondalık 27'dir. Bash'de "\033"veya "\e"; PowerShell'de doğrudan eşdeğer bir sıra yoktur, ancak bunun yerine bir ifade yerleştirebilirsiniz:"$([char]27)"

PowerShell Core'da "`e"bunun yerine çıkış sırasını kullanabilirsiniz . Asherber tarafından yapılan yorum için teşekkürler.


PowerShell'de kullanın

Bu, örneğin arka plan rengini kodla camgöbeği olarak ayarlamak için aşağıdaki çıkış sırasını kullanabileceğiniz anlamına gelir 46:

"$([char]27)[46m"

Hangi gibi kullanılabilir:

echo "$([char]27)[46mColoured text"

İşleri daha okunabilir hale getirmek için bir değişken tanımlayalım:

$ESC = [char]27

Böylece kullanabiliriz:

"$ESC[46m"

$ESCDeğişmez ESC karakteri nerede , [param listesinin başlangıcını ve msonunu tanımlar .

Bir komutta kullanma:

echo "$ESC[46mColoured text"

Orijinal renk ayarlarını geri yüklemek için 0bunun yerine kodu kullanırız:

echo "$ESC[46mColoured text$ESC[0mUncoloured text"

Daha gelişmiş renkler

Temel 16 renk paletinden memnun değilseniz, formla tam 24 bit renkleri kullanabilirsiniz:

"$ESC[48;2;<r>;<g>;<b>m"

<r>0-255 arası kırmızı, <g>yeşil ve <b>mavi için ondalık değer nerede , ör."$ESC[48;2;255;0;123m"

Daha fazla bilgi için lütfen belgelere bakın .

Aslında, bunların hepsi bash'da yaptıklarınızla doğrudan eşdeğerdir, ancak veya $ESCyerine (tanımladıktan sonra) kullanmanız gerekir .\e\033


Renkli bir istem ayarlama

Bunları bir araya getirerek, arka plan rengini değiştirmek için ANSI renk kaçış kodlarını değiştirilmiş bir istemde kullanabiliriz:

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

süreklilik

Bunun oturumlar boyunca devam etmesini istiyorsanız profilinize ekleyin (beğen .bashrc). İçindeki profilinizin yolunu görebilirsiniz $profile.


Merhaba ~, bu harika bir cevap.Ama dahası, metni kalın stil yapabilir miyiz? O zaman daha kolay bulabiliriz ..
yode

1
@yode Cevapta bağlandığım az çok hepsi burada belgelendi ;)
Bob

1
@ Ah Ah. 37 parlak olmayan beyazla karşılaştırırsanız, PowerShell pencereleri varsayılan olarak zaten 97 parlak beyaz kullanıyor gibi görünüyor. (Btw, bir orada oluyor yeni renk paleti . Bir sonraki Win10 versiyonunun temiz yüklemeleri için bazı ekran görüntüleri vardır var şimdiki paleti ; notu 1;37maynıdır 97m"parlak beyaz" hem anlam,)
Bob

1
@yode Temel olarak, conhost henüz kalın harfleri desteklemiyor. Parlak, kalın yazı tipinin yerine geçer ve varsayılan olarak parlak rengi zaten kullanıyorsunuzdur. Gerçekten cesur olmak istiyorsanız, ConEmu gibi alternatif bir terminal kullanabilirsiniz - ancak ANSI cesur desteği de tamamlanmamış gibi görünüyor. IMO, zahmete değmez.
Bob

1
Markdown'un düzgün çalışmasını sağlayamıyorum, ancak PowerShell Core'da backtick + e'yi kullanabilirsiniz [char]27. Bunun önceki sürümlerde eklenip eklenmediğinden emin değilim.
asherber
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.