PowerShell for N00bs 3: What's a.k.a. short for?
"Also known as." It's an abbreviation, a TLA. (What's a TLA short for? "Three Letter Acronymn." See: recursion, definition.)
In PowerShell for N00bs 2, we snuck something in the last example:
PSH> (gm -InputObject [string] | where-Object {$_.name -eq 'replace'}).definition
System.String Replace(Char oldChar, Char newChar), System.String Replace(String oldValue, String newValue)
'gm' here stands for 'Get-Member.' It's an alias. Let's create one - as an old school Unix user, my fingers are used to typing 'less' when I want to paginate output.
PSH> New-Alias less more
Now, to test it,
PSH> dir $env:temp | less
Works like a charm. But, it doesn't save us any keystrokes. Now, let's set aside our Unix experience and try to be lazy.
PS> New-Alias ls more
New-Alias : Alias not allowed because an alias with the name 'ls' already exists.
At line:1 char:10
+ New-Alias <<<< ls more
Ouch. Well, what does it do?
PSH> Get-Alias ls
CommandType Name Definition
----------- ---- ----------
Alias ls Get-ChildItem
And what's 'Get-ChildItem?' Let's run it and see.
Oh, it's 'dir'. Wait a second...
PSH> Get-Alias dir
CommandType Name Definition
----------- ---- ----------
Alias dir Get-ChildItem
'dir' is indeed an alias. In fact, most of what we're used to doing in cmd.exe (and /usr/bin/bash, for that matter) has been aliased.
PSH> Get-Alias
That's a lot of aliases. Quick review: how many? Get-Alias returns a list of items (an array in PSH-speak), and every array object has a property of the number of elements it contains.
PSH> (Get-Alias).count
101
That's nice, but they're all out of order. Let's organize them by alias name so we can better see what we have.
PSH> Get-Alias | Sort-Object -Property Name
Next: we know 'dir' is an alias for Get-ChildItem. Any others? Yes, we can sort the alias list by Definition, but we'll still have to scan for Get-ChildItem.
PSH> get-Alias | Where-Object {$_.Definition -match "Get-Childitem"}
CommandType Name Definition
----------- ---- ----------
Alias gci Get-ChildItem
Alias ls Get-ChildItem
Alias dir Get-ChildItem
'gci' makes sense in a TLA-sort of way. In fact, if we sort the alias list by Definition, we'll find most aliased commands have one alias that is some abbreviation or truncation of the command's name.
To review, we learned three things:
- PowerShell comes with a bunch of aliases for common commands.
- We can dump the list to see what it provides, and sort it by either alias or definition.
- We can create more, so long as we don't overwrite existing ones. (More on that later.)