Aliases no PowerShell são apelidos curtos para comandos ou funções, criados para agilizar a digitação no terminal. Eles são essenciais para quem deseja produtividade no dia a dia, mas exigem cuidado quando usados em scripts, pois podem tornar o código obscuro e difícil de manter. Nesta aula, vamos explorar os aliases nativos, como criar os seus próprios e quando é apropriado (ou não) utilizá-los.

O PowerShell oferece um conjunto robusto de aliases pré-definidos, que você pode listar, criar e remover dinamicamente. Entender como eles funcionam é fundamental para dominar o shell e escrever scripts mais claros e eficientes.

Aliases nativos

O PowerShell já vem com vários aliases prontos, que são abreviações para cmdlets comuns. Por exemplo, Get-ChildItem tem o alias dir (herdado do cmd) e ls (herdado do Unix). Esses aliases são definidos no perfil do PowerShell e podem ser vistos com o cmdlet Get-Alias.

Para listar todos os aliases disponíveis, execute:

Get-Alias

Você verá uma tabela com as colunas Alias e Command. Por exemplo:

Alias           Command
----           -------
%              ForEach-Object
*              Where-Object
?              Where-Object
cd             Set-Location
cls            Clear-Host
copy           Copy-Item
dir            Get-ChildItem
... 

Alguns aliases são bem conhecidos, como cd para Set-Location, cls para Clear-Host, copy para Copy-Item, e echo para Write-Output. Eles ajudam a facilitar a transição de usuários que vêm de outros shells, como cmd ou bash.

É possível também ver os aliases de um cmdlet específico usando Get-Alias -Definition:

Get-Alias -Definition Get-ChildItem

Isso retorna todos os aliases que apontam para Get-ChildItem, como dir e ls.

Uma característica importante é que os aliases são resolvidos em tempo de execução, ou seja, se você alterar um alias, os scripts que o utilizam serão afetados na próxima execução. Por isso, é recomendável não depender de aliases em scripts.

Criando aliases

Para criar um novo alias, utiliza-se o cmdlet Set-Alias ou New-Alias. A sintaxe básica é:

Set-Alias -Name <nome> -Value <comando>

Por exemplo, para criar um alias g para o comando Get-Process:

Set-Alias -Name g -Value Get-Process

Depois de criado, você pode digitar g no terminal para executar Get-Process.

Outra forma é usar New-Alias, que é mais explícito:

New-Alias -Name grep -Value Select-String

Isso cria um alias grep que funciona como o comando Unix, mas chama Select-String.

É importante notar que Set-Alias pode substituir um alias existente, enquanto New-Alias falha se o alias já existir, a menos que você use o parâmetro -Force:

New-Alias -Name g -Value Get-Process -Force

Para remover um alias, use Remove-Item no caminho do alias:

Remove-Item alias:\g

Ou use o cmdlet Remove-Alias (disponível no PowerShell 6+):

Remove-Alias -Name g

Lembre-se de que os aliases criados em uma sessão são temporários, a menos que você os adicione ao seu perfil do PowerShell (arquivo $PROFILE). Para persistir, edite o perfil e adicione os comandos Set-Alias ou New-Alias.

Quando usar (e não usar em scripts)

Aliases são ótimos para uso interativo no terminal, pois economizam tempo e são fáceis de lembrar. No entanto, em scripts, o uso de aliases é considerado uma má prática por vários motivos:

  • Clareza: Aliases como % ou ? podem não ser óbvios para quem lê o script, especialmente para iniciantes.
  • Portabilidade: Se o script for executado em outra máquina, os aliases podem não existir, causando erros.
  • Manutenção: Se o alias for redefinido, o comportamento do script pode mudar inesperadamente.
  • Autodocumentação: O nome completo do cmdlet descreve melhor a ação, tornando o script autoexplicativo.

Portanto, em scripts, sempre use o nome completo do cmdlet ou função. Por exemplo, em vez de dir, use Get-ChildItem. Em vez de ? , use Where-Object.

Exceções: Em scripts muito curtos ou protótipos, pode-se usar aliases para agilizar, mas é recomendável substituí-los antes de compartilhar ou colocar em produção.

Uma boa prática é definir aliases personalizados no perfil para uso interativo, mas nunca depender deles em scripts.

Exemplos

Vamos ver alguns exemplos práticos de criação e uso de aliases.

Exemplo 1: Criar um alias para abrir o Bloco de Notas

Set-Alias -Name notepad -Value notepad.exe

Agora, digitar notepad abrirá o Bloco de Notas (na verdade, notepad já é um alias nativo, mas serve como ilustração).

Exemplo 2: Alias para listar arquivos com detalhes

Set-Alias -Name ll -Value Get-ChildItem

Isso permite usar ll para listar arquivos, similar ao comando ls -l do Unix.

Exemplo 3: Alias para um comando com parâmetros fixos

Aliases não permitem incluir parâmetros diretamente. Para isso, é necessário criar uma função. Mas você pode usar um alias para uma função que você mesmo criou:

function Get-FilesByExtension($ext) {
    Get-ChildItem -Filter "*.$ext"
}
Set-Alias -Name gfe -Value Get-FilesByExtension

Agora, gfe txt listará todos os arquivos .txt no diretório atual.

Exemplo 4: Listar aliases de um cmdlet

Get-Alias -Definition Get-Process

Isso mostra todos os aliases que apontam para Get-Process.

Exemplo 5: Importar aliases de um módulo

Alguns módulos exportam aliases. Para ver os aliases de um módulo específico, use:

Import-Module PSScheduledJob
Get-Alias -Module PSScheduledJob

Isso lista os aliases fornecidos pelo módulo.

Boas práticas e observações finais

Ao trabalhar com aliases, siga estas recomendações:

  • Use aliases apenas para uso interativo, não em scripts.
  • Prefira nomes de aliases curtos e intuitivos.
  • Documente seus aliases personalizados no perfil, para que outros usuários entendam.
  • Verifique se um alias já existe antes de criar um novo, para evitar conflitos.
  • Lembre-se de que aliases são específicos da sessão, a menos que você os persista no perfil.

Dominar aliases melhora sua eficiência no PowerShell, mas manter seus scripts legíveis é mais importante. Equilibre o uso dos dois para se tornar um profissional completo.

Referências

Exercícios

  1. Liste todos os aliases que apontam para o cmdlet Get-Content e explique o que eles fazem.
  2. Crie um alias chamado f que execute o comando Get-ChildItem -Recurse e teste-o no diretório atual.
  3. Explique por que usar aliases em scripts é considerado má prática e dê um exemplo de script que seria problemático.
  4. Remova o alias criado no exercício 2 usando Remove-Item e depois verifique se ele foi removido.
  5. Crie uma função Get-LargeFiles que liste arquivos maiores que 100MB e, em seguida, crie um alias lg para essa função. Teste o alias.

✓ Resposta: Para listar aliases que apontam para Get-Content, use:
Get-Alias -Definition Get-Content
Os aliases típicos são cat e type. Eles são usados para exibir o conteúdo de um arquivo no console.

✓ Resposta: Execute:
Set-Alias -Name f -Value Get-ChildItem -Force
Para testar, digite f no diretório atual. Para incluir o parâmetro -Recurse, é necessário criar uma função, pois aliases não aceitam parâmetros fixos. Exemplo:
function f { Get-ChildItem -Recurse }

✓ Resposta: Usar aliases em scripts é problemático porque eles podem não existir em outras máquinas, tornam o código menos legível e podem ser redefinidos, alterando o comportamento do script. Exemplo:
dir *.txt
Se dir for redefinido, o script quebra. Em vez disso, use Get-ChildItem -Filter *.txt.

✓ Resposta: Para remover o alias f, use:
Remove-Item alias:\f
Verifique com Get-Alias -Name f; se retornar erro, o alias foi removido.

✓ Resposta: Crie a função:
function Get-LargeFiles { Get-ChildItem -File | Where-Object { $_.Length -gt 100MB } }
Depois, crie o alias:
Set-Alias -Name lg -Value Get-LargeFiles
Teste digitando lg no diretório.