Alias, becenév, álnév

Ahogy a fejezet bevezetőjében említettem, a PowerShell kettős célt szolgál: jó shell és jó programnyelv próbál lenni. A jó shellre az jellemző, hogy kényelmes, könnyen kezelhető, keveset kell gépelni, „fél szavakból” is megérti a felhasználót. Ennek eszköze a néhány betűből álló alias  (becenevek, álnevek, szinonimák) használatának lehetősége. Álnevet kapcsolhatunk (akár többet is) különböző PowerShell elemekhez. Az alias bármilyen parancsban, kifejezésben teljes értékű helyettesítője gazdájának, így nincs szükség az eredeti név begépelésére. Az álnevek természetesen szkriptekben is korlátozás nélkül használhatók, de alkalmazásuk jelentősen ronthatja a szkript olvashatóságát és hordozhatóságát. Ugyancsak a jobb olvashatóság miatt nem nagyon használok aliasokat a könyvben szereplő mintapéldákban és szkriptekben sem.

Álnevet a következő elemekhez rendelhetünk:

PowerShell függvények

PowerShell szkriptek

Fájlok

Bármilyen végrehajtható állomány (exe, com, cmd, vbs, stb.)

 A PowerShell számos beépített álnévvel is rendelkezik, ezek közül néhánnyal (dir, cd, stb.) már a korábbi fejezetekben is találkozhattunk. Az álnevek teljes listáját a Get-Alias  cmdlet jeleníti meg:

PS C:\> Get-Alias

 

CommandType     Name                                               Version

-----------     ----                                               -------

Alias           % -> ForEach-Object

Alias           ? -> Where-Object

Alias           ac -> Add-Content

Alias           asnp -> Add-PSSnapin

Alias           cat -> Get-Content

Alias           cd -> Set-Location

Alias           CFS -> ConvertFrom-String                          3.1.0.0

...

Rendelkezésünkre áll továbbá az „Alias:” meghajtó is, amely egy más módon teszi hozzáférhetővé a beceneveket:

PS C:\> Set-Location alias:

PS Alias:\> Get-ChildItem

Ha nem a teljes listára, hanem csak egy konkrét aliasra vagyunk kíváncsiak, akkor a következő parancsot használhatjuk:

PS Alias:\> Get-Alias dir

 

CommandType     Name                                               Version

-----------     ----                                               -------

Alias           dir -> Get-ChildItem

Megjegyzés

PowerShell 2.0-ban ennek a kifejezésnek másképp nézett ki a kimenete:

PS C:\> Get-Alias -name dir

 

CommandType     Name                          Definition

-----------     ----                          ----------

Alias           dir                           Get-ChildItem

Én személy szerint jobban szerettem ezt a megjelenítést, mert ez mutatja a valóságot, azaz, hogy van egy Name és egy Definition tulajdonságunk. Az újabb PowerShell verziókban megjelenő Name alatt megjelenő dir -> Get-ChildItem nem a valóságot mutatja, hanem az csak egy megjelenítési trükk. Ezekről majd a 1.9.8 Formázás testre szabása (Get‑FormatData,  Update-FormatData) fejezetben lesz szó.

Kissé bonyolultabb a helyzet, ha az egy adott parancshoz használható aliasokat szeretnénk felderíteni (természetesen ilyenből több is lehet). Az alábbi parancs a Set-Location cmdlethez tartozó álneveket listázza ki (a parancs egyes részeinek jelentéséről a következő fejezetben lesz szó):

[27] PS C:\> Get-Alias | Where-Object {$_.Definition -eq "Set-Location"}

 

CommandType     Name                                               Version

-----------     ----                                               -------

Alias           cd -> Set-Location

Alias           chdir -> Set-Location

Alias           sl -> Set-Location

A már ismert Get-Alias cmdleten kívül az alábbi listában látható négy további parancs is az aliasokkal kapcsolatos különféle műveletek elvégzésére szolgál.

PS C:\> Get-Help *-alias

 

Name                     Category                 Synopsis

----                     --------                 --------

Export-Alias             Cmdlet                   Exports information a...

Get-Alias                Cmdlet                   Gets the aliases for ...

Import-Alias             Cmdlet                   Imports an alias list...

New-Alias                Cmdlet                   Creates a new alias.

Set-Alias                Cmdlet                   Creates or changes an...

A New-Alias  cmdlet segítségével új álneveket definiálhatunk, paraméterként az alias nevét és a vele helyettesítendő parancsot kell megadnunk. Az alábbi parancs a „word” aliast hozza létre, amely a továbbiakban a szövegszerkesztő egyszerű indítását teszi lehetővé (természetesen a winword.exe valódi helyét kell megadnunk):

PS C:\> New-Alias -name word -Value "c:\program files\microsoft office\office

10\winword.exe"

PS C:\> word

A létrehozott aliasok csak az adott munkameneten belül élnek, a rendszeresen használni kívánt darabokat a PowerShell profilba kell felvennünk (lásd később). Az Export-Alias  cmdlet segítségével a teljes alias listát fájlba menthetjük, a fájl pedig (például egy másik számítógépen) az Import-Alias  parancs segítségével tölthető vissza.

Megjegyzés

Érdekes, olyan álnév nincsen, hogy date, mégis működik a dolog:

[29] PS C:\> date

 

2011. május 13. 11:50:12

 

 

[30] PS C:\> get-alias date

Get-Alias : This command cannot find a matching alias because alias with name

'date' do not exist.

At line:1 char:10

+ get-alias <<<<  date

    + CategoryInfo          : ObjectNotFound: (date:String) [Get-Alias], Item

   NotFoundException

    + FullyQualifiedErrorId : ItemNotFoundException,Microsoft.PowerShell.Comm

   ands.GetAliasCommand

Ennek az az oka, hogy a nem létező parancsok elé a parancsértelmező megpróbálja elé illeszteni a Get- előtagot, és ha ez már létező parancs, akkor végrehajtja azt. Ez tehát jó néhány újabb, „rejtett” álnevet jelent a rendszerben.



Word To HTML Converter