Si usas la terminal te gusta tener alias para tus comandos, pero si usas Windows Terminal o PowerShell habrás notado que cada que reinicias las terminal los alias que creaste desaparecieron. Yo te enseñaré cómo hacerlos permanentes.
Abre tu Windows Terminal o PowerShell, ejecuta el siguiente comando echo $PROFILE
y te dará una ruta muy similar a esta C:\Users\<Tu usuario>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
, este es el archivo profile, donde se guarda la configuración que cargará siempre nuestra terminal al iniciarse.
Intenta acceder con el siguiente comando notepad $PROFILE
, si todo está bien abrirá el bloc de notas con el archivo Microsoft.PowerShell_profile.ps1
, pero en caso de que te diga que no se pueda acceder a la ruta es porque la carpeta WindowsPowerShell
no existe dentro de tu carpeta Documents
, si tienes este error solo crea la carpeta y vuelve a ejecutar notepad $PROFILE
, ahora te dirá que el archivo no existe, que si quieres crearlo y le dices que sí.
En este bloc de notas ingresa el siguiente contenido:
function HelloWorld { echo "Hello World" }
New-Alias hello HelloWorld
Ahora guarda los cambios, reinicia tu terminal, escribe hello
y verás como salida la frase "Hello World".
En caso de que al abrir la terminal tengas este error:
Es porque tu perfil de la terminal no tiene permisos para poder ejecutar scripts dentro de PowerShell, pero esto es muy fácil arreglar.
Abre tu PowerShell como Administrador y revisa las políticas de ejecución con Get-ExecutionPolicy
, lo más probable es que te devuelva Restricted
, entonces para arreglar esto solo ejecuta lo siguiente para quitar la restricción Set-ExecutionPolicy Unrestricted
, te pedirá que confirmes la acción, le dices que sí y quedará listo para que reinicies tu terminal en intentes de nuevo ejecutar hello
.
✨ Ahora tienes tu primer alias ✨ y siempre se cargará cada que inicies tu terminal.
Ya que está todo listo ahora vamos a crear unos alias más útiles. Aquí te enseñaré unos para moverte entre directorios y para Git, pero tú después puedes crear unos más complejos.
Empecemos en cómo nos moveremos entre directorios. En mi caso yo tengo una carpeta llamada develop en D:\develop\
, no quiero usar cd D:\develop\
cada que quiero moverme ahí, entonces crearé mi comando dev
el cual me llevará a esa ubicación.
function GoDevelop { Set-Location D:\develop\ }
New-Alias dev GoDevelop
Te explico qué es lo que hicimos aquí. Estamos creando el comando dev
con la sentencia New-Alias
y cuando ejecutemos esa palabra se ejecutará la función GoDevelop
la cual cambiará la ubicación de la terminal gracias a la sentencia de Set-Location
.
De esta forma puedes crear todos los comandos que quieras para moverte entre directorios, así te ahorras escribir todo un path larguísimo y que sea más cómodo para ti.
Ahora veamos los alias que reciben parámetros 👀. Tengo un alias para el comando de commit de git. Lo que haremos será resumir el comando y que reciba como parámetro el mensaje de nuestro commit.
function GitCommit([string]$message) { git commit -m "$message" }
New-Alias gcmt GitCommit
Como puedes ver a estas funciones también le podemos pasar parámetros tipados. Mi alias para hacer commit es gcmt
y lo que pasará es que lo primero que yo le pase luego de mi alias es lo que se identificará como el parámetro $message
de la función para poner en el lugar que le corresponde.
Un ejemplo de uso sería gcmt "Commit de prueba"
, lo pongo entre comillas porque de esa manera se reconocerá como un solo parámetro. Si no las usara la terminal creería que Commit
es $message
y que las palabras de
y prueba
son otros parámetros o sentencias de la terminal.
También puedes crear alias que reciben más de un parámetro. Solamente tienes que seguir la misma fórmula que ya viste. Por ejemplo:
function GitPush([string]$remote, [string]$branch) { git push $remote $branch }
New-Alias gpsh GitPush
Y un ejemplo de la forma de usarlo sería gpsh origin hotfix
🚀
En algunos casos puede que al iniciar la terminal te diga que un alias ya existe en un mensaje de error. Esto es porque Windows por defecto ya tiene un lista de alias. Si quieres verificar cuáles ya están ocupados usa el comando Get-Alias
.
Ahora ya sabes crear alias para tus comandos y seguir usando Windows Terminal y PowerShell sin necesdiad de estar escribiendo un montón de palabras todo el tiempo.
Cuéntame en mi Twitter qué te pareció este pequeño tutorial y si tienes ganas de profundizar en este tema te recomiendo que leas muchísimo la documentación oficial de Microsoft.
Para finalizar te dejo la lista de los que yo tengo para mi terminal, tal vez podrías usarlos también tú :D
function Home { Set-Location $HOME }
New-Alias home Home
function GoDevelop { Set-Location D:\develop\ }
New-Alias dev GoDevelop
function GoDesktop { Set-Location $HOME\Desktop\ }
New-Alias dk GoDesktop
function GitStatus { git status }
New-Alias gs GitStatus
function GitAdd([string]$file) { git add "$file" }
New-Alias ga GitAdd
function GitCommit([string]$message) { git commit -m "$message" }
New-Alias gcmt GitCommit
function GitSwitchCreate([string]$branch) { git switch -c $branch }
New-Alias gswc GitSwitchCreate
function GitSwitch([string]$branch) { git switch $branch }
New-Alias gsw GitSwitch
function NewFile([string]$filePath) {
$match = Select-String -Pattern "^(.*(\\|\/))?(.*\.?.*?)$" -InputObject "$filePath"
$path = pwd
if ($match.Matches.groups[1].value -ne "") {
$path = $match.Matches.groups[1].value
}
$fileName = $match.Matches.groups[3].value
New-Item -Path "$path" -Name "$fileName" -ItemType "file"
}
New-Alias touch NewFile