Productividad: ssh, git CLI, tmux, alias y dotfiles
¿Qué es?
Esta lección reúne las herramientas que convierten la terminal en tu centro de operaciones diario. SSH te conecta a máquinas remotas como si estuvieras frente a ellas; la CLI de Git versiona tu trabajo desde la línea de comandos; tmux te deja tener varias sesiones a la vez y mantenerlas vivas aunque cierres la ventana; y los alias y dotfiles personalizan tu entorno para que te acompañe a cualquier ordenador. Son piezas distintas con un mismo objetivo: que trabajes más rápido y con tu propia configuración.
¿Cómo funciona?
SSH usa un par de claves (una pública que repartes y una privada que jamás compartes) para entrar a un servidor sin contraseña. Git registra tus cambios con un ciclo de status, add, commit y push. tmux trabaja con un prefijo (Ctrl+B y luego una tecla) para dividir paneles y hacer «detach» dejando procesos corriendo. Los alias son atajos para comandos largos que guardas en tus dotfiles (~/.zshrc o ~/.bashrc), archivos de configuración ocultos que recargas con source y que conviene versionar con Git.
¿Para qué sirve?
Estas herramientas hacen que tu proyecto final «Tu kit de automatización personal» viva contigo: al versionar tus dotfiles, estrenas una máquina, clonas el repositorio y recuperas de golpe todos tus alias, funciones y scripts. Los alias materializan la mentalidad del kit (detectar lo repetitivo y borrarlo), mientras SSH y tmux te permiten ejecutar tus automatizaciones en servidores remotos sin perderlas si se cae la conexión. Es el paso que lleva tu kit de una sola máquina a cualquier parte.
Ya sabes moverte, manipular texto, entender permisos y escribir scripts. Esta lección reúne las herramientas que convierten la terminal en tu centro de operaciones: trabajar en máquinas remotas, versionar con Git, manejar varias sesiones a la vez y, sobre todo, personalizar tu entorno para que el kit de automatización viva contigo en cualquier máquina. Al final hay equivalencias para quien venga de PowerShell en Windows.
SSH: tu terminal en otra máquina
ssh te conecta a un servidor remoto y te da un shell allí, como si estuvieras sentado frente a él.
ssh ana@192.168.1.50 # conectar como usuario ana
ssh ana@miservidor.com -p 2222 # puerto distinto del 22 por defecto
Teclear la contraseña cada vez es lento e inseguro. Mejor usar claves:
# 1. Generar un par de claves (privada + pública)
ssh-keygen -t ed25519 -C "ana@correo.com"
# 2. Copiar la pública al servidor (en Linux existe el ayudante):
ssh-copy-id ana@miservidor.com
# En macOS, si no tienes ssh-copy-id:
# cat ~/.ssh/id_ed25519.pub | ssh ana@miservidor.com 'cat >> ~/.ssh/authorized_keys'
# 3. A partir de ahora entras sin contraseña
ssh ana@miservidor.com
La clave privada (~/.ssh/id_ed25519, sin .pub) no se comparte jamás. Debe tener permisos 600. Solo se reparte la clave pública (.pub).
Para no repetir host, usuario y puerto, define alias en ~/.ssh/config:
# ~/.ssh/config
Host servidor
HostName miservidor.com
User ana
Port 2222
Después basta ssh servidor. Y para copiar archivos por SSH: scp archivo.txt servidor:/ruta/.
Git desde la terminal
La interfaz gráfica esconde lo que pasa; la CLI te lo enseña. Ciclo básico:
git status # ¿qué cambió?
git add archivo.txt # preparar un cambio
git add . # preparar todo lo modificado
git commit -m "Añade X" # registrar el cambio con un mensaje
git log --oneline # historial compacto
git diff # ver qué cambió antes de hacer add
git branch nueva-funcion # crear rama
git switch nueva-funcion # cambiar a ella (o: git checkout)
git merge nueva-funcion # fusionarla en la rama actual
git pull # traer cambios del remoto
git push # subir tus commits
git log --oneline --graph --all te dibuja el árbol de ramas en texto. Combínalo con un alias (más abajo) y lo tendrás en un teclazo.
tmux: varias sesiones en una ventana
tmux (terminal multiplexer) te permite dividir la pantalla en paneles, tener varias ventanas y —lo mejor— dejar sesiones corriendo aunque cierres la terminal o se caiga el SSH.
tmux # iniciar una sesión
tmux new -s trabajo # sesión con nombre
tmux ls # listar sesiones
tmux attach -t trabajo # re-engancharte a una sesión
Dentro de tmux todo se hace con un prefijo: Ctrl + B y luego una tecla.
Ctrl+B " # dividir en dos paneles (horizontal)
Ctrl+B % # dividir en dos paneles (vertical)
Ctrl+B flechas # moverte entre paneles
Ctrl+B c # nueva ventana
Ctrl+B n # siguiente ventana
Ctrl+B d # "detach": salir dejando la sesión viva
El caso de uso estrella: te conectas por SSH, abres tmux, lanzas un proceso largo, haces Ctrl+B d y cierras el portátil. Mañana ssh + tmux attach y todo sigue ahí.
Alias y dotfiles: tu entorno te acompaña
Un alias es un atajo para un comando largo. Los dotfiles son los archivos de configuración ocultos (empiezan por .) donde guardas esos alias y tus ajustes: ~/.zshrc en macOS (Zsh) y ~/.bashrc en Linux (Bash).
# Añade esto a ~/.zshrc (macOS) o ~/.bashrc (Linux):
alias ll='ls -lah'
alias gs='git status'
alias gl='git log --oneline --graph --all'
alias ..='cd ..'
alias kit='cd ~/kit-automatizacion' # ir directo a tu proyecto
# También puedes meter funciones:
mkcd() { mkdir -p "$1" && cd "$1"; } # crear carpeta y entrar
Tras editar el archivo, recárgalo sin reabrir la terminal:
source ~/.zshrc # macOS
source ~/.bashrc # Linux
Versiona tus dotfiles con Git en un repositorio. Así, al estrenar máquina, clonas el repo y recuperas todos tus alias, funciones y el kit de automatización de una vez. Es la forma profesional de "llevarte tu terminal" a cualquier parte.
Ejemplo guiado: un alias que ahorra escritura real
# 1. Mira cuánto escribes hoy para ver el estado de Git
git status
# 2. Abre tu archivo de configuración (usa el editor que prefieras)
nano ~/.zshrc # o ~/.bashrc en Linux
# 3. Añade al final:
alias gs='git status'
alias gaa='git add .'
alias gc='git commit -m'
# 4. Guarda (en nano: Ctrl+O, Enter, Ctrl+X) y recarga
source ~/.zshrc
# 5. Pruébalo
gs # equivale a git status
gc "Mi primer commit con alias" # git commit -m "..."
Tres letras en vez de doce, cada vez, todo el día. Multiplica eso por meses: esa es la mentalidad del kit de automatización: detectar lo repetitivo y borrarlo.
Equivalencias en PowerShell (Windows)
Si alternas con Windows, muchos conceptos se trasladan, aunque los nombres cambian:
Bash/Zsh PowerShell
-------- ----------
ls Get-ChildItem (alias: ls, dir)
cp Copy-Item (alias: cp)
mv Move-Item (alias: mv)
rm Remove-Item (alias: rm)
cat Get-Content (alias: cat)
grep "x" Select-String "x"
pwd Get-Location (alias: pwd)
export VAR=valor $env:VAR = "valor"
~/.bashrc $PROFILE (tu archivo de perfil de PowerShell)
alias x='...' Set-Alias / función en $PROFILE
PowerShell trabaja con objetos, no con texto plano: Get-Process | Where-Object CPU -gt 10 filtra por una propiedad real, no por una cadena. Es un modelo distinto, pero la intuición de "encadenar con tuberías" es la misma. SSH y Git CLI funcionan igual en Windows.
Tech English: remote (remoto), key pair (par de claves), public/private key (clave pública/privada), branch (rama), commit (confirmación de cambios), merge (fusión), session (sesión), attach/detach (enganchar/soltar), alias (atajo), dotfiles (archivos de configuración).
Ejercicios
-
Diseña tu set de alias. Revisa mentalmente (o con
history | sort | uniq -c | sort -rn) los comandos que más repites. Propón cinco alias o funciones que reducirían tu escritura, explicando para cada uno qué problema resuelve. Justifica por qué conviene guardarlos en un repositorio de dotfiles en lugar de solo en la máquina actual. -
Planifica una sesión remota resiliente. Debes ejecutar en un servidor un proceso que tarda dos horas, pero tu conexión se cae a ratos. Describe paso a paso, con los comandos exactos, cómo usarías
ssh(con clave, no contraseña) ytmuxpara que el proceso sobreviva a las desconexiones y puedas volver a verlo más tarde desde otra máquina. Explica por quétmuxes necesario aquí y qué pasaría sin él.