about_ANSI_Terminals
Kısa açıklama
PowerShell'de ANSI kaçış dizileri için sağlanan desteği açıklar.
Uzun açıklama
PowerShell, PowerShell'i barındıran terminal uygulamasında çıkışın işlenmesini denetlemek için ANSI kaçış dizilerinin kullanımını destekleyen birçok özelliğe sahiptir.
PowerShell 7.2 yeni $PSStyle
bir otomatik değişken ekledi ve ANSI ile dekore edilmiş metnin çıkışını desteklemek için PowerShell altyapısında değişiklik yaptı.
ANSI Terminal desteği
ANSI özellikleri, xterm tabanlı terminallerle uyumlu olacak şekilde tasarlanmıştır. Daha fazla bilgi için bkz . Wikipedia'daki xterm .
Windows 10 ve üzeri sürümlerde Windows Konsol Konağı xterm ile uyumludur. Windows Terminal uygulaması da xterm ile uyumludur.
macOS'ta varsayılan terminal uygulaması xterm ile uyumludur.
Linux için her dağıtım farklı bir terminal uygulamasıyla birlikte gönderilir. Uygun bir terminal uygulaması bulmak için dağıtımınız için belgelere bakın.
$PSStyle
Değişken aşağıdaki özelliklere sahiptir:
- Sıfırla - Tüm süslemeleri kapatır
- Yanıp Sönme - Yanıp Sönme'ye açar
- BlinkOff - Yanıp sönme kapatılır
- Kalın - Kalın'ın açması
- BoldOff - Kalın'ın kapatılmasını
- Soluk - Soluk'ı açar (PowerShell 7.4'te eklenir)
- DimOff - Dim'i kapatır (PowerShell 7.4'te eklenir)
- Gizli - Gizliyi açar
- HiddenOff - Gizliyi kapatır
- Ters - Ters Çevir'i açar
- ReverseOff - Ters Çevir'i kapatır
- italik - Italik'i açar
- ItalicOff - Italik'i kapatır
- Altı Çizili - Altı çiziliyi açar
- UnderlineOff - Altı çizili kapatmayı açar
- Üstü çizili - Üstü çiziliyi açar
- Üstü ÇiziliOff - Üstü kapalı bırakır
- OutputRendering - Çıkış işlemenin ne zaman kullanıldığını denetleme
- Biçimlendirme - Çıkış akışları için varsayılan biçimlendirmeyi denetleen iç içe nesne
- İlerleme - İlerleme çubuklarının işlenmesini denetleen iç içe nesne
- FileInfo - FileInfo nesnelerinin renklendirmesini denetlemek için iç içe nesne.
- Ön plan - Ön plan renklendirmesini denetlemek için iç içe nesne
- Arka Plan - Arka plan renklendirmesini denetlemek için iç içe nesne
Temel üyeler adlarına eşlenmiş ANSI kaçış dizilerinin dizelerini döndürür. Değerler özelleştirmeye izin verecek şekilde ayarlanabilir. Örneğin, kalın değerini altı çizili olarak değiştirebilirsiniz. Özellik adları, sekme tamamlama özelliğini kullanarak süslü dizeler oluşturmanızı kolaylaştırır:
"$($PSStyle.Background.BrightCyan)Power$($PSStyle.Underline)$($PSStyle.Bold)Shell$($PSStyle.Reset)"
Aşağıdaki üyeler ANSI biçimlendirmesinin nasıl veya ne zaman kullanılacağını denetler:
$PSStyle.OutputRendering
değerlerine sahip birSystem.Management.Automation.OutputRendering
sabit listesidir:ANSI
: ANSI kaçış dizileri her zaman olduğu gibi geçirilir.Önemli
Çıkışı aşağı akışla yürütülmesi amaçlanan bir dosyaya veya işlem hattına yeniden yönlendirirken ANSI modunu kullanmanız gerekir. Bu, çıkışın değiştirilmemesini sağlar. Başka bir modun kullanılması ANSI kaçış dizilerini kaldırarak çıkışı değiştirir ve bu da yürütme davranışını değiştirebilir.
PlainText
: ANSI kaçış dizileri her zaman yalnızca düz metin olacak şekilde çıkarılır. Uzak oturumlarda, uzak ana bilgisayar olarakPlainText
ayarlanırsa, çıkış, yerel istemciye geri gönderilmeden önce ANSI kaçış dizilerinden çıkarılır.Host
: Bu varsayılan davranıştır. ANSI kaçış dizileri yeniden yönlendirilen veya kanallı çıkıştan kaldırılır. Daha fazla bilgi için bkz . Çıktıyı yeniden yönlendirme.
$PSStyle.Background
ve$PSStyle.Foreground
üyeleri, 16 standart konsol rengi için ANSI kaçış dizilerini içeren dizelerdir.Black
BrightBlack
White
BrightWhite
Red
BrightRed
Magenta
BrightMagenta
Blue
BrightBlue
Cyan
BrightCyan
Green
BrightGreen
Yellow
BrightYellow
Değerler ayarlanabilir ve herhangi bir sayıda ANSI kaçış dizisi içerebilir. Ayrıca 24 bit renk belirtmek için bir
FromRgb()
yöntem de vardır. yöntemini çağırmanınFromRgb()
iki yolu vardır.string FromRgb(byte red, byte green, byte blue) string FromRgb(int rgb)
Aşağıdaki örneklerden biri arka plan rengini 24 bit renk
Beige
olarak ayarlar.$PSStyle.Background.FromRgb(245, 245, 220) $PSStyle.Background.FromRgb(0xf5f5dc)
$PSStyle.Formatting
hata ayıklama, hata, ayrıntılı, uyarı iletilerinin ve liste ve tablo üst bilgilerinin varsayılan biçimlendirmesini denetlemek için iç içe yerleştirilmiş bir nesnedir. Kalın ve altı çizili gibi öznitelikleri de de denetleyebilirsiniz. Biçimlendirme işleme için renkleri yönetmenin yolu olarak yerini alır$Host.PrivateData
.$Host.PrivateData
geriye dönük uyumluluk için varolmaya devam eder, ancak öğesine$PSStyle.Formatting
bağlı değildir.$PSStyle.Formatting
aşağıdaki üyelere sahiptir:- FormatAccent - liste öğeleri için biçimlendirme
- ErrorAccent - hata meta verileri için biçimlendirme
- Hata - hata iletileri için biçimlendirme
- Uyarı - uyarı iletileri için biçimlendirme
- Ayrıntılı - ayrıntılı iletiler için biçimlendirme
- Hata ayıklama - hata ayıklama iletileri için biçimlendirme
- TableHeader - tablo üst bilgileri için biçimlendirme
- CustomTableHeaderLabel - nesne üzerinde gerçekte özellik olmayan tablo üst bilgileri için biçimlendirme
- FeedbackName - geri bildirim sağlayıcısı adı için biçimlendirme (PowerShell 7.4'te deneysel bir özellik olarak eklenir)
- FeedbackText - geri bildirim iletileri için biçimlendirme (PowerShell 7.4'te deneysel bir özellik olarak eklenir)
- FeedbackAction - Geri bildirim sağlayıcısı tarafından önerilen eylemler için biçimlendirme (PowerShell 7.4'te deneysel bir özellik olarak eklenir)
$PSStyle.Progress
, ilerleme görünümü çubuğu işlemeyi denetlemenize olanak tanır.- Stil - İşleme stilini ayaran ANSI dizesi.
- MaxWidth - Görünümün maksimum genişliğini ayarlar. varsayılan değeridir
120
. En düşük değer 18'dir. - Görünüm - ve
Classic
değerleriniMinimal
içeren bir sabit listesi.Classic
, değişiklik olmadan var olan işlemedir.Minimal
tek satırlık minimal bir işlemedir.Minimal
varsayılan değerdir. - UseOSCIndicator - Varsayılan olarak kullanılır
$false
. Bunu$true
OSC göstergelerini destekleyen terminaller için olarak ayarlayın.
Not
Konak Sanal Terminal'i desteklemiyorsa,
$PSStyle.Progress.View
otomatik olarak olarakClassic
ayarlanır.Aşağıdaki örnek, işleme stilini en düşük ilerleme çubuğuna ayarlar.
$PSStyle.Progress.View = 'Minimal'
$PSStyle.FileInfo
FileInfo nesnelerinin renklendirmesini denetlemek için iç içe geçmiş bir nesnedir.- Dizin - Dizinlerin rengini belirtmek için yerleşik üye
- SymbolicLink - Sembolik bağlantıların rengini belirtmek için yerleşik üye
- Yürütülebilir - Yürütülebilir dosyalar için renk belirtmek üzere yerleşik üye.
- Uzantı - Farklı dosya uzantılarının renklerini tanımlamak için bu üyeyi kullanın. Uzantı üyesi arşiv ve PowerShell dosyaları için uzantıları önceden içerir.
ANSI çıkışı oluşturan cmdlet'ler
- markdown cmdlet'leri - Show-Markdown cmdlet'i, markdown metni içeren bir dosyanın içeriğini görüntüler. Çıkış, farklı stilleri temsil etmek için ANSI dizileri kullanılarak işlenir. Get-MarkdownOption ve Set-MarkdownOption cmdlet'lerini kullanarak stillerin tanımlarını yönetebilirsiniz.
- PSReadLine cmdlet'leri - PSReadLine modülü, komut satırındaKi PowerShell söz dizimi öğelerini renklendirmek için ANSI dizilerini kullanır. Renkler Get-PSReadLineOption ve Set-PSReadLineOption kullanılarak yönetilebilir.
Get-Error
- Get-Error cmdlet'i, okunmasını kolaylaştırmak için biçimlendirilmiş bir Error nesnesinin ayrıntılı bir görünümünü döndürür.Select-String
- PowerShell 7.0 sürümünden başlayarak Select-String, çıkıştaki eşleşen desenleri vurgulamak için ANSI dizilerini kullanır.Write-Progress
- ANSI çıkışı, yukarıda açıklandığı gibi kullanılarak$PSStyle.Progress
yönetilir. Daha fazla bilgi için bkz . Yazma İlerleme Durumu
Çıktıyı Host
modda yeniden yönlendirme
Varsayılan olarak, $PSStyle.OutputRendering
Konak olarak ayarlanmıştır. ANSI kaçış dizileri yeniden yönlendirilen veya kanallı çıkıştan kaldırılır.
OutputRendering yalnızca Konak, Out-File
ve Out-String
içindeki işleme için geçerlidir. Yerel yürütülebilir dosyalardan alınan çıkış etkilenmez.
PowerShell 7.2.6, aşağıdaki senaryolar için ve Out-String
davranışını Out-File
değiştirdi:
- Giriş nesnesi saf dize olduğunda, bu cmdlet'ler OutputRendering ayarından bağımsız olarak dizeyi değiştirmeden tutar.
- Giriş nesnesinin bir biçimlendirme görünümünün uygulanması gerektiğinde, bu cmdlet'ler çıkış dizelerini OutputRendering ayarına göre biçimlendirme çıkış dizelerinde tutar veya kaldırır.
Bu, PowerShell 7.2 ile karşılaştırıldığında bu cmdlet'lerde hataya neden olan bir değişikliktir.
OutputRendering , örneğin bir komut satırından çalıştırıp pwsh
çıkışı yeniden yönlendirdiğinizde PowerShell ana bilgisayar işleminden gelen çıkışa uygulanmaz.
Aşağıdaki örnekte PowerShell, Linux üzerinde üzerinde üzerinde bash
çalıştırılır. cmdlet'i Get-ChildItem
ANSI ile dekore edilmiş metin oluşturur. İşlemde bash
yeniden yönlendirme gerçekleştiğinden, PowerShell konağı dışında çıkış OutputRendering'den etkilenmez.
pwsh -noprofile -command 'Get-Childitem' > out.txt
İçeriğinizi out.txt
incelediğinizde ANSI kaçış dizilerini görürsünüz.
Buna karşılık, PowerShell oturumunda yeniden yönlendirme gerçekleştiğinde OutputRendering yeniden yönlendirilen çıkışı etkiler.
pwsh -noprofile -command 'Get-Childitem > out.txt'
İçeriğini out.txt
incelediğinizde ANSI kaçış dizisi yoktur.
ANSI çıktısını devre dışı bırakma
ANSI kaçış dizileri desteği TERM veya NO_COLOR ortam değişkenleri kullanılarak kapatılabilir.
Aşağıdaki davranış değerleri $env:TERM
aşağıdaki gibi değişir:
dumb
-Ayarlar$Host.UI.SupportsVirtualTerminal = $false
xterm-mono
-Ayarlar$PSStyle.OutputRendering = PlainText
xtermm
-Ayarlar$PSStyle.OutputRendering = PlainText
Varsa$env:NO_COLOR
, $PSStyle.OutputRendering
PlainText olarak ayarlanır. NO_COLOR ortam değişkeni hakkında daha fazla bilgi için bkzhttps://no-color.org/. .
C'den kullanma $PSStyle
#
C# geliştiricileri, aşağıdaki örnekte gösterildiği gibi tekil olarak erişebilir PSStyle
:
string output = $"{PSStyle.Instance.Foreground.Red}{PSStyle.Instance.Bold}Hello{PSStyle.Instance.Reset}";
PSStyle
, System.Management.Automation ad alanında bulunur.
PowerShell altyapısı aşağıdaki değişiklikleri içerir:
- PowerShell biçimlendirme sistemi, 'a göre
$PSStyle.OutputRendering
güncelleştirilir. - Tür
StringDecorated
, ANSI kaçış dizelerini işlemek için eklenir. string IsDecorated
Dize veyaC1 CSI
karakter dizileri içerdiğindeESC
true döndürmek için boole özelliği eklendi.- Bir
Length
dizenin özelliği, ANSI kaçış dizileri olmadan metnin uzunluğunu döndürür. - yöntemi,
StringDecorated Substring(int contentLength)
ANSI kaçış dizilerinin bir parçası olmayan içerik uzunluğuna kadar dizin 0'dan başlayan bir alt dize döndürür. Bu, dizeleri kesmeye ve yazdırılabilir karakter alanı kaplamayan ANSI kaçış dizilerini korumaya yönelik tablo biçimlendirmesi için gereklidir. string ToString()
yöntemi aynı kalır ve dizenin düz metin sürümünü döndürür.string ToString(bool Ansi)
parametresi true ise yöntemi ham ANSI katıştırılmış dizesiniAnsi
döndürür. Aksi takdirde, ANSI kaçış dizileri kaldırılmış bir düz metin sürümü döndürülür.- yöntemi,
FormatHyperlink(string text, uri link)
köprüleri süslemek için kullanılan ANSI kaçış dizilerini içeren bir dize döndürür. Windows Terminali gibi bazı terminal konakları, işlenen metni terminalde tıklanabilir hale getiren bu işaretlemeyi destekler.
PSStyle sınıfının statik yöntemleri
PowerShell 7.4 sınıfına [System.Management.Automation.PSStyle]
üç yeni statik yöntem ekler.
[System.Management.Automation.PSStyle] | Get-Member -Static -MemberType Method
TypeName: System.Management.Automation.PSStyle
Name MemberType Definition
---- ---------- ----------
Equals Method static bool Equals(System.Object objA, System.Object objB)
MapBackgroundColorToEscapeSequence Method static string MapBackgroundColorToEscapeSequence(System.ConsoleColor bac…
MapColorPairToEscapeSequence Method static string MapColorPairToEscapeSequence(System.ConsoleColor foregroun…
MapForegroundColorToEscapeSequence Method static string MapForegroundColorToEscapeSequence(System.ConsoleColor for…
ReferenceEquals Method static bool ReferenceEquals(System.Object objA, System.Object objB)
Bu yöntemler, ConsoleColor değerlerini ön plan ve arka plan renkleri için veya her ikisinin birleşimi için ANSI kaçış sıralarına dönüştürmenin bir yolunu sağlar.
Aşağıdaki örneklerde bu yöntemler tarafından üretilen ANSI kaçış dizileri gösterilmektedir.
using namespace System.Management.Automation
[PSStyle]::MapBackgroundColorToEscapeSequence('Black') | Format-Hex
Label: String (System.String) <3A04954D>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 1B 5B 34 30 6D �[40m
[PSStyle]::MapForegroundColorToEscapeSequence('Red') | Format-Hex
Label: String (System.String) <38B50F41>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 1B 5B 39 31 6D �[91m
[PSStyle]::MapColorPairToEscapeSequence('Red','Black') | Format-Hex
Label: String (System.String) <365A5875>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 1B 5B 39 31 3B 34 30 6D �[91;40m
Ayrıca bkz.
PowerShell