ESC
Comandos Bash / Terminal

Navegación

Comando Opciones Ejemplo Salida Descripción
ls -la, -lh, -R ls -la /etc lista de archivos Lista el contenido del directorio; -l formato largo, -a archivos ocultos, -h tamaños legibles
cd -, ~, .. cd ~/projects cambia dir Cambia de directorio; cd - vuelve atrás, cd ~ va al directorio personal
pwd pwd /home/user Muestra el directorio de trabajo actual (ruta completa)
tree -L n, -a tree -L 2 vista árbol Muestra el árbol de directorios; -L limita la profundidad (puede requerir instalación)
find -name -type -mtime find . -name '*.log' rutas de archivos Busca archivos/directorios que coincidan con criterios
locate -i locate nginx.conf rutas de archivos Búsqueda rápida de archivos usando índice de base de datos; ejecutar updatedb primero

Operaciones de Archivos

Comando Opciones Ejemplo Salida Descripción
cp -r, -i, -u cp -r src/ dst/ copia archivo Copia archivos; -r para directorios, -i solicita confirmación antes de sobrescribir
mv -i, -n mv old.txt new.txt mueve/renombra Mueve o renombra archivos; -i solicita confirmación antes de sobrescribir
rm -r, -f, -i rm -rf dist/ eliminado Elimina archivos/directorios; -r recursivo, -f forzar — usar con cuidado
mkdir -p mkdir -p a/b/c nuevo dir Crea directorio; -p crea directorios padres según sea necesario
touch touch index.html archivo vacío Crea un archivo vacío o actualiza la marca de tiempo del archivo
ln -s ln -s /etc/nginx nginx symlink Crea enlace duro; -s para enlace simbólico

Ver Archivos

Comando Opciones Ejemplo Salida Descripción
cat -n, -A cat -n file.txt contenido del archivo Muestra archivo; -n agrega números de línea, -A muestra caracteres no imprimibles
head -n N head -n 20 log.txt primeras N líneas Muestra las primeras líneas del archivo (10 por defecto)
tail -n N, -f tail -f app.log últimas N líneas Muestra las últimas líneas; -f sigue el contenido nuevo en tiempo real
less /search, q less large.log vista paginada Navega por el archivo en páginas; / para buscar, q para salir, espacio para avanzar
wc -l, -w, -c wc -l file.txt conteo Cuenta palabras; -l líneas, -w palabras, -c bytes/caracteres

Búsqueda y Texto

Comando Opciones Ejemplo Salida Descripción
grep -r -i -n -v -E grep -rn 'error' logs/ líneas coincidentes Busca patrones de texto; -r recursivo, -i sin distinción de mayúsculas, -n números de línea
grep -v grep -v 'debug' app.log no coincidentes Inversión de coincidencia — muestra líneas que NO contienen el patrón
grep -E grep -E 'warn|error' log líneas coincidentes regex extendido — usa | para OR, + para uno o más
awk '{print $N}' awk '{print $1}' f valor de columna Procesamiento de texto patrón-acción; $1 primer campo, $NF último campo
sed -i 's/a/b/g' sed -i 's/foo/bar/g' f texto modificado Editor de flujo; s/buscar/reemplazar/g sustituye globalmente
sort -n -r -k N sort -n numbers.txt salida ordenada Ordena líneas; -n numérico, -r inverso, -k ordena por columna N
uniq -c, -d sort f | uniq -c líneas únicas Elimina líneas adyacentes duplicadas; generalmente se usa después de sort

Permisos

Comando Opciones Ejemplo Salida Descripción
chmod 755, 644, +x chmod +x script.sh permisos cambiados Cambia permisos de archivo; 755=rwxr-xr-x, 644=rw-r--r--
chown -R user:group chown -R www-data:www-data /var/www propietario cambiado Cambia propietario y grupo del archivo; -R recursivo
ls -la ls -la /var/www listado de permisos Muestra permisos, propietario, grupo y tamaño de todos los archivos
umask 022, 027 umask 022 permisos por defecto Establece la máscara de permisos por defecto para nuevos archivos (022 → 644 archivos)
sudo -u user sudo systemctl restart nginx comando elevado Ejecuta comando como superusuario; -u para ejecutar como usuario diferente

Gestión de Procesos

Comando Opciones Ejemplo Salida Descripción
ps aux, -ef ps aux | grep nginx lista de procesos Lista procesos; aux=todos los usuarios, -ef=formato completo
top q, k, M top vista en vivo Monitor de procesos interactivo; q salir, k matar, M ordenar por memoria
htop F3, F9 htop vista en vivo top mejorado con colores; F3 buscar, F9 matar (puede requerir instalación)
kill -9, -15 kill -9 1234 señal enviada Envía señal al PID; -15 SIGTERM (graceful), -9 SIGKILL (forzar)
killall -9, -u killall node señal enviada Mata todos los procesos por nombre
jobs -l jobs -l lista de trabajos Lista trabajos en segundo plano/detenidos en el shell actual
bg / fg %N fg %1 reanudado bg envía el trabajo al segundo plano, fg lo trae al primer plano

Red

Comando Opciones Ejemplo Salida Descripción
curl -o -L -X -H -d curl -O https://example.com/f respuesta Transfiere datos vía HTTP/FTP; -L sigue redirecciones, -o guarda en archivo
wget -O -r -q wget -q https://example.com archivo guardado Descarga archivos; -O renombra la salida, -r recursivo, -q silencioso
ping -c N ping -c 4 google.com RTT ms Prueba la conectividad de red; -c limita el número de paquetes
ssh -i -p -L ssh user@host -p 2222 shell Shell seguro; -i archivo de clave, -p puerto, -L reenvío de puerto local
scp -r -P -i scp file user@host:~/ copiado Copia segura por SSH; -r recursivo, -P puerto (mayúscula)
netstat -tuln netstat -tuln lista de puertos Muestra conexiones de red; -t TCP, -u UDP, -l escuchando, -n numérico
ss -tuln ss -tuln lista de puertos Reemplazo moderno de netstat; más rápido y con más detalle

Archivos y Compresión

Comando Opciones Ejemplo Salida Descripción
tar -czf -czf out.tar.gz tar -czf arc.tar.gz dir/ archivo comprimido Crea un tarball comprimido con gzip; c=crear, z=gzip, f=nombre de archivo
tar -xzf -xzf file.tar.gz tar -xzf arc.tar.gz -C /tmp extraído Extrae un tarball gzip; x=extraer, -C directorio de destino
tar -tf tar -tf archive.tar.gz lista de archivos Lista el contenido del tarball sin extraer
zip -r, -9 zip -r out.zip dir/ archivo zip Crea un archivo zip; -r recursivo, -9 compresión máxima
unzip -d, -l unzip archive.zip -d out/ extraído Extrae zip; -d destino, -l lista contenido sin extraer
gzip / gunzip -k, -d gzip -k file.txt comprimido gzip comprime un único archivo; -k conserva el original, gunzip para descomprimir

Entorno y Shell

Comando Opciones Ejemplo Salida Descripción
env env | grep PATH var=valor Muestra todas las variables de entorno; combinar con grep para filtrar
export export NODE_ENV=production variable establecida Establece una variable de entorno para la sesión actual y procesos hijos
echo $VAR echo $HOME valor Imprime el valor de la variable; usa ${VAR} para desambiguación en cadenas
which which node ruta Muestra la ruta completa del ejecutable del comando
alias alias ll='ls -la' atajo Crea un atajo de comando; agregar a ~/.bashrc para persistencia
source source ~/.bashrc recargado Ejecuta el archivo en el contexto del shell actual (también: . ~/.bashrc)
history !N, !! history | tail -20 lista de comandos Muestra el historial de comandos; !! repite el último, !N ejecuta el comando N

Referencia Rápida Git

Comando Opciones Ejemplo Salida Descripción
git init git init my-project repositorio creado Inicializa un nuevo repositorio Git en el directorio
git clone --depth 1 git clone url repositorio clonado Clona un repositorio remoto; --depth 1 para clon superficial
git status -s git status -s cambios Muestra el estado del árbol de trabajo; -s formato corto
git add -A, -p git add -p preparado Prepara cambios; -A todos, -p modo de parche interactivo
git commit -m, --amend git commit -m 'msg' confirmado Confirma los cambios preparados; --amend modifica el último commit
git push -u origin git push -u origin main enviado Envía al remoto; -u establece la rama de seguimiento upstream
git pull --rebase git pull --rebase sincronizado Obtiene e integra cambios remotos; --rebase en lugar de merge
git log --oneline --graph git log --oneline -10 historial Muestra el historial de commits; --oneline compacto, --graph ramas visuales
git stash pop, list git stash pop restaurado Guarda temporalmente el trabajo no confirmado; pop para restaurar
git diff --staged git diff --staged diff Muestra cambios; --staged muestra cambios preparados pero no confirmados

Preguntas Frecuentes

sh (Bourne Shell) es el shell Unix original, estandarizado por POSIX. bash (Bourne Again Shell) es su sucesor y superconjunto, añadiendo arrays, sintaxis de prueba extendida [[]], expansión aritmética $(( )), historial, completado por tabulación y más. En la mayoría de los sistemas Linux /bin/sh es un enlace simbólico a bash o dash (un shell ligero solo POSIX).

Tres pasos: (1) Añade una línea shebang como primera línea: #!/bin/bash. (2) Hazlo ejecutable con chmod +x script.sh. (3) Ejecútalo con ./script.sh (el ./ es necesario porque el directorio actual no está en $PATH por defecto). Para ejecutarlo desde cualquier lugar, muévelo a un directorio en tu PATH.

Bash tiene tres flujos estándar: stdin (0), stdout (1), stderr (2). Redirigir stdout a archivo: command > file.txt (sobrescribir) o command >> file.txt (añadir). Redirigir stderr: command 2> errors.txt. Redirigir ambos: command > output.txt 2>&1. Descartar salida: command > /dev/null 2>&1. Pipe stdout: command1 | command2.