about_Special_Characters
Krátký popis
Popisuje speciální sekvence znaků, které řídí, jak PowerShell interpretuje další znaky v sekvenci.
Dlouhý popis
PowerShell podporuje sadu speciálních sekvencí znaků, které se používají k reprezentaci znaků, které nejsou součástí standardní znakové sady. Sekvence se běžně označují jako řídicí sekvence.
Řídicí sekvence začínají zpětným znakem, kterému se říká zvýraznění hrobu (ASCII 96) a rozlišují se malá a velká písmena. Znak zpětného zápisu lze také označovat jako řídicí znak.
Řídicí sekvence se interpretují pouze v případech, kdy jsou obsaženy v řetězcích s dvojitou uvozovou sadou ("
).
PowerShell rozpozná tyto řídicí sekvence:
Sequence | Popis |
---|---|
`0 |
Null |
`a |
Výstrahy |
`b |
Backspace |
`e |
Řídicí znak (přidaný v PowerShellu 6) |
`f |
Informační kanál formuláře |
`n |
Nový řádek |
`r |
Návrat na začátek řádku |
`t |
Horizontální tabulátor |
`u{x} |
Řídicí sekvence Unicode (přidaná v PowerShellu 6) |
`v |
Vertikální tabulátor |
PowerShell má také speciální token, který označuje, kde se má analýza zastavit. Všechny znaky, které následují za tímto tokenem, se používají jako hodnoty literálů, které nejsou interpretovány.
Speciální parsovací tokeny:
Sequence | Popis |
---|---|
-- |
Zpracování zbývajících hodnot jako argumentů, nikoli parametrů |
--% |
Přestaňte parsovat cokoli, co následuje |
~ |
Tilda |
Null ('0)
Znak null (`0
) se ve výstupu PowerShellu zobrazí jako prázdné místo.
Tato funkce umožňuje používat PowerShell ke čtení a zpracování textových souborů, které používají znaky null, například ukončení řetězce nebo indikátory ukončení záznamu. Speciální znak null není ekvivalentem $null
proměnné, která ukládá hodnotu null .
Upozornění ('a)
Znak výstrahy (`a
) odešle signál pípnutí do reproduktoru počítače.
Tento znak můžete použít k upozornění uživatele na nadcházející akci. Následující příklad odešle dva signály pípnutí do reproduktoru místního počítače.
for ($i = 0; $i -le 1; $i++){"`a"}
Backspace ('b)
Znak backspace (`b
) přesune kurzor o jeden znak zpět, ale neodstraní žádné znaky.
Příklad zapíše zálohu slova a pak přesune kurzor zpět dvakrát. Potom na nové pozici napíše mezeru následovanou slovem ven.
"backup`b`b out"
back out
Escape ('e)
Poznámka:
Tento speciální znak byl přidán v PowerShellu 6.0.
Řídicí znak (`e
) se nejčastěji používá k určení sekvence virtuálního terminálu (řídicí sekvence ANSI), která upravuje barvu textu a další atributy textu, jako je tučné písmo a podtržení. Tyto sekvence lze také použít pro umístění kurzoru a posouvání. Hostitel PowerShellu musí podporovat sekvence virtuálních terminálů. Můžete zkontrolovat logickou hodnotu $Host.UI.SupportsVirtualTerminal
a zjistit, jestli jsou tyto sekvence ANSI podporované.
Další informace o řídicích sekvencích ANSI najdete v článku řídicího kódu ANSI na Wikipedii.
Následující příklad vypíše text se zelenou barvou popředí.
$fgColor = 32 # green
"`e[${fgColor}mGreen text`e[0m"
Green text
Informační kanál formuláře ('f)
Znak informačního kanálu formuláře`f
je instrukce tisku, která vysune aktuální stránku a pokračuje v tisku na další stránce. Znak informačního kanálu formuláře má vliv jenom na tištěné dokumenty. Nemá vliv na výstup obrazovky.
Nový řádek ('n)
Znak nového řádku (`n
) vloží konec řádku hned za znak.
Tento příklad ukazuje, jak pomocí nového znaku řádku vytvořit konce řádků v Write-Host
příkazu.
"There are two line breaks to create a blank line`n`nbetween the words."
There are two line breaks to create a blank line
between the words.
Návrat na začátek řádku ('r)
Znak návratu řádku (`r
) přesune výstupní kurzor na začátek aktuálního řádku a pokračuje v zápisu. Všechny znaky na aktuálním řádku se přepíší.
V tomto příkladu se text před vrácením na začátek řádku přepíše.
Write-Host "These characters are overwritten.`rI want this text instead "
Všimněte si, že text před odstraněním znaku `r
se přepíše.
I want this text instead written.
Vodorovná karta (ne)
Vodorovný znak tabulátoru`t
() přejde na další zarážku tabulátoru a pokračuje v psaní v tomto okamžiku. Ve výchozím nastavení má konzola PowerShellu zarážku tabulátoru v každé osmé mezerě.
Tento příklad vloží dvě karty mezi každý sloupec.
"Column1`t`tColumn2`t`tColumn3"
Column1 Column2 Column3
Znak Unicode ('u{x})
Poznámka:
Tento speciální znak byl přidán v PowerShellu 6.0.
Řídicí sekvence Unicode (`u{x}
) umožňuje zadat libovolný znak Unicode šestnáctkovým znázorněním jeho bodu kódu. To zahrnuje znaky Unicode nad základní vícejazyčnou rovinou (>0xFFFF
), která obsahuje znaky emoji, jako je například znak palce nahoru (`u{1F44D}
). Řídicí sekvence Unicode vyžaduje alespoň jednu šestnáctkovou číslici a podporuje až šest šestnáctkových číslic. Maximální šestnáctková hodnota sekvence je 10FFFF
.
Tento příklad vypíše symbol šipky nahoru (↕) dolů.
"`u{2195}"
Svislá karta ('v)
Svislý znak tabulátoru`v
() přejde na další svislou zarážku tabulátoru a zapíše zbývající výstup v tomto okamžiku. Vykreslování svislé karty je závislé na zařízení a terminálu.
Write-Host "There is a vertical tab`vbetween the words."
Následující příklady ukazují vykreslený výstup svislé karty v některých běžných prostředích.
Hostitelská aplikace konzoly systému Windows interpretuje (`v
) jako speciální znak bez přidání mezer navíc.
There is a vertical tab♂between the words.
Terminál Windows vykresluje svislý znak tabulátoru jako návrat na začátek řádku a odřádkování. Zbytek výstupu se vytiskne na začátku dalšího řádku.
There is a vertical tab
between the words.
Na tiskárnách nebo v konzolách se systémem Unix se svislý znak tabulátoru posune na další řádek a zapíše zbývající výstup v tomto okamžiku.
There is a vertical tab
between the words.
Pokračování řádku
Znak backtick lze také použít na konci řádku jako signál analyzátoru PowerShellu, že příkaz pokračuje na dalším řádku. Další informace najdete v tématu about_Parsing.
Token koncového parametru (--
)
Token konce parametrů (--
) označuje, že všechny argumenty, které následují, mají být předány ve skutečné podobě, jako by se kolem nich umístily dvojité uvozovky. Když například použijete --
výstup řetězce -InputObject
bez použití uvozovek nebo ho interpretujete jako parametr:
Write-Output -- -InputObject
-InputObject
Toto je konvence zadaná ve specifikaci prostředí POSIX a nástrojů.
Zastavení analýzy tokenu (--%)
Token stop-parsing (--%
) zabraňuje PowerShellu interpretovat řetězce jako příkazy a výrazy PowerShellu. To umožňuje předání těchto řetězců jiným programům pro interpretaci.
Za název programu a před argumenty programu, které můžou způsobit chyby, umístěte token stop-parsing.
V tomto příkladu Icacls
příkaz používá token stop-parsing.
icacls X:\VMS --% /grant Dom\HVAdmin:(CI)(OI)F
PowerShell odešle následující řetězec do Icacls
.
X:\VMS /grant Dom\HVAdmin:(CI)(OI)F
V tomto druhém příkladu předáme proměnnou $HOME
cmd.exe /c echo
do příkazu dvakrát.
cmd.exe /c echo $HOME --% $HOME
Výstup ukazuje, že první instance $HOME
je interpretována v PowerShellu tak, aby hodnota proměnné byla předána cmd
. Druhá instance $HOME
přichází po tokenu stop-parsing, takže se předává jako literálový řetězec.
C:\Users\username $HOME
Další informace o tokenu zastavení analýzy najdete v tématu about_Parsing.
Tilda (~)
Znak tilda (~
) má v PowerShellu zvláštní význam. Když se používá s příkazy PowerShellu na začátku cesty, PowerShell rozbalí znak tilda do domovského adresáře uživatele. Pokud použijete znak vlnovky kdekoli jinde v cestě, považuje se za literální znak.
Další informace o tokenu zastavení analýzy najdete v tématu about_Parsing.