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 $PSStylebir 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 bir System.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 olarak PlainTextayarlanı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ın FromRgb() 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 Beigeolarak 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.Formattingbağ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 Classicdeğerlerini Minimal 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 olarak Classicayarlanır.

    Aşağıdaki örnek, işleme stilini en düşük ilerleme çubuğuna ayarlar.

    $PSStyle.Progress.View = 'Minimal'
    
  • $PSStyle.FileInfoFileInfo 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.Progressyö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-Fileve Out-Stringiç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.OutputRenderinggüncelleştirilir.
  • Tür StringDecorated , ANSI kaçış dizelerini işlemek için eklenir.
  • string IsDecorated Dize veya C1 CSI karakter dizileri içerdiğinde ESC 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ış dizesini Ansi 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.