about_ANSI_Terminals
Rövid leírás
Az ANSI-feloldási sorozatok PowerShellben elérhető támogatását ismerteti.
Hosszú leírás
A PowerShell számos olyan funkcióval rendelkezik, amelyek támogatják az ANSI-feloldó szekvenciák használatát a Kimenet renderelésének szabályozásához a PowerShellt futtató terminálalkalmazásban.
A PowerShell 7.2 új automatikus változót adott hozzá, $PSStyle
és a PowerShell-motor módosításaival támogatja az ANSI által dekorált szöveg kimenetét.
ANSI-terminál támogatása
Az ANSI-funkciók úgy lettek kialakítva, hogy kompatibilisek legyenek az xterm-alapú terminálokkal. További információ: xterm a Wikipédiában.
Windows 10 és újabb rendszereken a Windows Konzol gazdagép xterm kompatibilis. A Windows Terminál alkalmazás xterm kompatibilis is.
MacOS rendszeren az alapértelmezett terminálalkalmazás xterm kompatibilis.
Linux esetén minden disztribúció más terminálalkalmazással rendelkezik. A megfelelő terminálalkalmazás megkereséséhez tekintse meg a disztribúció dokumentációját.
$PSStyle
A változó a következő tulajdonságokkal rendelkezik:
- Visszaállítás – Az összes dekoráció kikapcsolása
- Villogás – A Villogás bekapcsolva
- BlinkOff – A Villogás kikapcsolása
- Félkövér – Félkövér bekapcsolva
- BoldOff – Félkövér kikapcsolása
- Dim – Bekapcsolja a dim (a PowerShell 7.4-ben hozzáadva)
- DimOff – A halványság kikapcsolása (a PowerShell 7.4-ben lett hozzáadva)
- Rejtett – A Rejtett bekapcsolva
- HiddenOff – Elrejtés kikapcsolása
- Fordított – Bekapcsolja a fordított irányt
- ReverseOff – Kikapcsolja a visszafordulást
- Dőlt – Dőlt bekapcsolva
- Dőlt betűs kikapcsolás – Dőlt betűs kikapcsolás
- Aláhúzás – Aláhúzás bekapcsolva
- UnderlineOff – Aláhúzás kikapcsolása
- Áthúzás – Áthúzás bekapcsolva
- StrikethroughOff – Az áthúzás kikapcsolása
- OutputRendering – A kimeneti renderelés használatának szabályozása
- Formázás – Beágyazott objektum, amely a kimeneti streamek alapértelmezett formázását szabályozza
- Folyamat – Beágyazott objektum, amely vezérli a folyamatjelző sávok megjelenítését
- FileInfo – Beágyazott objektum a FileInfo-objektumok színezésének szabályozásához.
- Előtér – Beágyazott objektum az előtérszínezés szabályozásához
- Háttér – Beágyazott objektum a háttérszínezés szabályozásához
Az alaptagok a nevükre leképezett ANSI-feloldósorozatok sztringeit adják vissza. Az értékek beállíthatók a testreszabás engedélyezéséhez. Például félkövérre válthat aláhúzásra. A tulajdonságnevek megkönnyítik a dekorált sztringek létrehozását a tabulátorkiegészítés használatával:
"$($PSStyle.Background.BrightCyan)Power$($PSStyle.Underline)$($PSStyle.Bold)Shell$($PSStyle.Reset)"
Az ANSI-formázás használatát a következő tagok szabályozzák:
$PSStyle.OutputRendering
System.Management.Automation.OutputRendering
a következő értékekkel rendelkező enumerálás:ANSI
: Az ANSI-feloldósorozatok mindig az állapotuknak megfelelően haladnak át.Fontos
ANSI-módot kell használnia, amikor a kimenetet egy fájlra vagy a folyamatra irányítja át, amelyet az alsóbb rétegben szeretne végrehajtani. Ez biztosítja, hogy a kimenet ne változik. Bármely más mód használata megváltoztatja a kimenetet az ANSI-feloldási sorozatok eltávolításával, ami megváltoztathatja a végrehajtási viselkedést.
PlainText
: Az ANSI-feloldósorozatok mindig le vannak vetve, hogy csak egyszerű szöveg legyen. Távoli munkamenetek esetén, ha a távoli gazdagép be van állítvaPlainText
, a kimenet le lesz választva az ANSI-feloldási sorozatokról, mielőtt visszaküldené a helyi ügyfélnek.Host
: Ez az alapértelmezett viselkedés. A rendszer eltávolítja az ANSI-feloldási sorozatokat az átirányított vagy a vezetékes kimenetből. További információ: Átirányítás kimenete.
A
$PSStyle.Background
tagok olyan$PSStyle.Foreground
sztringek, amelyek a 16 standard konzolszín ANSI-feloldási sorozatait tartalmazzák.Black
BrightBlack
White
BrightWhite
Red
BrightRed
Magenta
BrightMagenta
Blue
BrightBlue
Cyan
BrightCyan
Green
BrightGreen
Yellow
BrightYellow
Az értékek beállíthatók, és tetszőleges számú ANSI-feloldási sorozatot tartalmazhatnak. A 24 bites szín megadására is
FromRgb()
van mód. Kétféleképpen hívhatja meg a metódustFromRgb()
.string FromRgb(byte red, byte green, byte blue) string FromRgb(int rgb)
Az alábbi példák bármelyike a háttérszínt állítja be a 24 bites színre
Beige
.$PSStyle.Background.FromRgb(245, 245, 220) $PSStyle.Background.FromRgb(0xf5f5dc)
$PSStyle.Formatting
beágyazott objektum, amely a hibakeresés, a hiba, a részletes, a figyelmeztető üzenetek, valamint a lista- és táblázatfejlécek alapértelmezett formázását szabályozza. Olyan attribútumokat is szabályozhat, mint a félkövér és aláhúzás. A formátummegjelenítési színek kezelésének módja a csere$Host.PrivateData
.$Host.PrivateData
továbbra is létezik a visszamenőleges kompatibilitás érdekében, de nincs csatlakoztatva a következőhöz$PSStyle.Formatting
: .$PSStyle.Formatting
a következő tagokat tartalmazza:- FormatAccent – listaelemek formázása
- ErrorAccent – a hiba metaadatainak formázása
- Hiba – a hibaüzenetek formázása
- Figyelmeztetés – figyelmeztető üzenetek formázása
- Részletes – részletes üzenetek formázása
- Hibakeresés – a hibakeresési üzenetek formázása
- TableHeader – táblázatfejlécek formázása
- CustomTableHeaderLabel – olyan táblázatfejlécek formázása, amelyek valójában nem tulajdonságok az objektumon
- FeedbackName – a visszajelzés-szolgáltató nevének formázása (kísérleti funkcióként hozzáadva a PowerShell 7.4-ben)
- FeedbackText – visszajelzési üzenetek formázása (a PowerShell 7.4 kísérleti funkciójaként hozzáadva)
- FeedbackAction – a visszajelzés-szolgáltató által javasolt műveletek formázása (kísérleti funkcióként hozzáadva a PowerShell 7.4-ben)
$PSStyle.Progress
lehetővé teszi a folyamatjelző sáv renderelésének szabályozását.- Stílus – AnSI-sztring, amely a renderelési stílust állítja be.
- MaxWidth – A nézet maximális szélességének beállítása. Alapértelmezett érték:
120
. A minimális érték 18. - Nézet – Értékeket tartalmazó enumerálás és
Minimal
Classic
.Classic
a meglévő, módosítás nélküli renderelés.Minimal
egy egysoros minimális renderelés. AMinimal
az alapértelmezett formátum. - UseOSCIndicator – Alapértelmezés szerint a következő:
$false
. Állítsa be ezt az$true
OSC-mutatókat támogató terminálokhoz.
Feljegyzés
Ha a gazdagép nem támogatja a virtuális terminált,
$PSStyle.Progress.View
a rendszer automatikusan a következőre állítja be a következőtClassic
: .Az alábbi példa minimális folyamatjelző sávra állítja a megjelenítési stílust.
$PSStyle.Progress.View = 'Minimal'
$PSStyle.FileInfo
beágyazott objektum, amely a FileInfo-objektumok színezését szabályozza.- Címtár – Beépített tag a könyvtárak színének megadásához
- SymbolicLink – Beépített tag a szimbolikus hivatkozások színének megadásához
- Végrehajtható – A végrehajtható elemek színének megadására szolgáló beépített tag.
- Bővítmény – A tag használatával különböző fájlkiterjesztések színeit határozhatja meg. A bővítménytag előre tartalmazza az archív és PowerShell-fájlok bővítményeit.
ANSI-kimenetet létrehozó parancsmagok
- A Markdown-parancsmagok – a Show-Markdown parancsmag megjeleníti a Markdown-szöveget tartalmazó fájl tartalmát. A kimenet ANSI-szekvenciák használatával jelenik meg a különböző stílusok megjelenítéséhez. A stílusok definícióit a Get-MarkdownOption és a Set-MarkdownOption parancsmagokkal kezelheti.
- PSReadLine-parancsmagok – a PSReadLine modul ANSI-szekvenciák használatával színezi a PowerShell-szintaxis elemeit a parancssorban. A színek a Get-PSReadLineOption és a Set-PSReadLineOption használatával kezelhetők.
Get-Error
- a Get-Error parancsmag egy hibaobjektum részletes nézetét adja vissza, amely úgy van formázva, hogy könnyebben olvasható legyen.Select-String
- A PowerShell 7.0-tól kezdve a Select-String ANSI-sorozatokkal emeli ki a kimenetben lévő egyező mintákat.Write-Progress
- Az ANSI-kimenet kezelése a fent leírt módon$PSStyle.Progress
történik. További információ: Írási folyamat
Kimenet Host
átirányítása módban
Alapértelmezés szerint $PSStyle.OutputRendering
gazdagépre van állítva. A rendszer eltávolítja az ANSI-feloldási sorozatokat az átirányított vagy a vezetékes kimenetből.
Az OutputRendering csak a gazdagépen Out-File
Out-String
történő renderelésre és a . A natív végrehajtható fájlok kimenetét nem érinti.
A PowerShell 7.2.6 módosította a következő forgatókönyvek viselkedésétOut-File
:Out-String
- Ha a bemeneti objektum tiszta sztring, ezek a parancsmagok a OutputRendering beállítástól függetlenül változatlanul tartják a sztringet .
- Amikor a bemeneti objektumra formázási nézetet kell alkalmazni, ezek a parancsmagok a Kimenetirendering beállítás alapján megőrzik vagy eltávolítják a kimeneti sztringek feloldósorozatait .
Ez a powershell 7.2-hez képest a parancsmagok kompatibilitástörő változása.
Az OutputRendering nem vonatkozik a PowerShell-gazdagép folyamatának kimenetére, például ha parancssorból futtatja pwsh
és átirányítja a kimenetet.
Az alábbi példában a PowerShell Linuxon bash
fut. A Get-ChildItem
parancsmag ANSI-sel díszített szöveget hoz létre. Mivel az átirányítás a bash
folyamat során történik, a PowerShell-gazdagépen kívül, a kimenetet nem befolyásolja az OutputRendering.
pwsh -noprofile -command 'Get-Childitem' > out.txt
Amikor megvizsgálja a tartalmát out.txt
, megjelenik az ANSI-feloldási sorozat.
Ezzel szemben, ha az átirányítás a PowerShell-munkameneten belül történik, az OutputRendering hatással van az átirányított kimenetre.
pwsh -noprofile -command 'Get-Childitem > out.txt'
Ha megvizsgálja, out.txt
hogy nincsenek-e ANSI-feloldási sorozatok.
ANSI-kimenet letiltása
Az ANSI-feloldási sorozatok támogatása a KIFEJEZÉS vagy NO_COLOR környezeti változók használatával kapcsolható ki.
A viselkedés módosításának $env:TERM
következő értékei az alábbiak szerint változnak:
dumb
-Készletek$Host.UI.SupportsVirtualTerminal = $false
xterm-mono
-Készletek$PSStyle.OutputRendering = PlainText
xtermm
-Készletek$PSStyle.OutputRendering = PlainText
Ha $env:NO_COLOR
létezik, akkor $PSStyle.OutputRendering
egyszerű szövegre van állítva. További információ a NO_COLOR környezeti változóról: https://no-color.org/.
Használat $PSStyle
a C-ből#
A C#-fejlesztők egyetlentonként férhetnek hozzá PSStyle
, ahogyan az alábbi példában is látható:
string output = $"{PSStyle.Instance.Foreground.Red}{PSStyle.Instance.Bold}Hello{PSStyle.Instance.Reset}";
PSStyle
a System.Management.Automation névtérben található.
A PowerShell-motor a következő módosításokat tartalmazza:
- A PowerShell formázási rendszere a tiszteletben tartása
$PSStyle.OutputRendering
érdekében frissül. - A
StringDecorated
rendszer hozzáadja a típust az ANSI által kezelt sztringek kezeléséhez. - A
string IsDecorated
logikai tulajdonság értéke igaz lesz, ha a sztring tartalmazESC
vagyC1 CSI
karaktersorozatokat. - A
Length
sztring tulajdonsága az ANSI-feloldósorozatok nélküli szöveg hosszát adja vissza. - A
StringDecorated Substring(int contentLength)
metódus egy 0 indextől kezdődő részszúrást ad vissza az ANSI-feloldósorozatok részét nem képező tartalomhosszig. Erre azért van szükség, hogy a táblázatformázás sztringeket csonkítson, és megőrizze az OLYAN ANSI-feloldási sorozatokat, amelyek nem foglalnak el nyomtatható karakterterületet. - A
string ToString()
metódus változatlan marad, és visszaadja a sztring egyszerű szöveges verzióját. - A
string ToString(bool Ansi)
metódus a nyers ANSI beágyazott sztringet adja vissza, ha aAnsi
paraméter igaz. Ellenkező esetben a rendszer egy egyszerű szöveges verziót ad vissza, amely eltávolítja az ANSI-feloldási sorozatokat. - A
FormatHyperlink(string text, uri link)
metódus egy olyan sztringet ad vissza, amely ANSI-feloldósorozatokat tartalmaz a hivatkozások díszítéséhez. Egyes terminál gazdagépek, például a Windows Terminál, támogatják ezt a korrektúrát, így a renderelt szöveg kattinthatóvá válik a terminálon.
A PSStyle osztály statikus metódusai
A PowerShell 7.4 három új statikus metódust ad hozzá az [System.Management.Automation.PSStyle]
osztályhoz.
[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)
Ezek a metódusok lehetővé teszik a ConsoleColor-értékek ANSI-feloldósorozattá alakítását az előtér- és háttérszínek, illetve a kettő kombinációjához.
Az alábbi példák az ezen módszerek által előállított ANSI-feloldási sorozatokat mutatják be.
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