La línea de comandos no es un vestigio del pasado: es la interfaz más directa, reproducible y automatizable para administrar un sistema operativo. Entender una docena de utilidades bien diseñadas permite resolver tareas complejas combinando piezas simples.
§ 1. Orientación y navegación por el árbol de directorios
En Linux todo cuelga del directorio raíz /. Antes de ejecutar cualquier acción conviene responder siempre tres preguntas: dónde estoy, qué hay aquí y hacia dónde quiero moverme.
pwd
/home/fivur/proyectos
ls -lah
total 16K
drwxr-xr-x 3 fivur fivur 4.0K oct 16 10:15 .
drwxr-x--- 8 fivur fivur 4.0K oct 16 09:00 ..
-rw-r--r-- 1 fivur fivur 415 oct 16 10:12 package.json
drwxr-xr-x 2 fivur fivur 4.0K oct 16 10:15 scriptsCombina -l (formato de lista detallada), -a (incluir archivos ocultos que empiezan por .) y -h (tamaños legibles en K, M, G): ls -lah.
§ 2. Inspeccionar archivos sin abrir un editor
Cuando trabajas con archivos de configuración o registros (logs), rara vez quieres modificarlos; solo necesitas consultarlos con rapidez:
| Comando | Propósito principal | Ejemplo práctico |
|---|---|---|
cat |
Mostrar el contenido completo de un archivo corto | cat /etc/hostname |
less |
Paginador interactivo para archivos extensos (q para salir) |
less /var/log/syslog |
head / tail |
Ver las primeras o últimas líneas de un archivo | tail -n 20 /var/log/auth.log |
tail -f |
Seguir en tiempo real nuevas líneas añadidas a un log | tail -f /var/log/nginx/access.log |
grep |
Filtrar líneas que coincidan con un patrón o texto | grep -i "error" app.log |
§ 3. La filosofía Unix: tuberías (`|`) y redirecciones (`>`)
El verdadero potencial de la shell aparece al conectar la salida estándar (stdout) de un programa con la entrada estándar (stdin) del siguiente mediante el operador tubería (|):
┌──────────────┐ stdout ┌──────────────────┐ stdout ┌───────────┐
│ cat accesos │ ─────────► │ grep "404" │ ─────────► │ wc -l │
└──────────────┘ └──────────────────┘ └───────────┘
Lee el archivo Filtra solo errores Cuenta las
HTTP 404 coincidenciasEn cuanto a las redirecciones hacia archivos:
comando > archivo.txt: sobrescribe el archivo con la salida del comando.comando >> archivo.txt: añade la salida al final del archivo sin borrar lo anterior.comando 2> errores.log: redirige únicamente la salida de error (stderr).
§ 4. Entender los permisos (`rwx`)
La primera columna de ls -l resume el tipo de archivo y los permisos para tres niveles: propietario (u), grupo (g) y otros (o):
# -rwxr-xr-- 1 fivur devs 1240 oct 16 11:00 backup.sh
# │├─┤├─┤├─┤
# │ │ │ └── Otros (o): r-- (4) -> solo lectura
# │ │ └───── Grupo (g): r-x (5) -> lectura y ejecución
# │ └──────── Propietario(u): rwx (7) -> lectura, escritura y ejecución
# └────────── Tipo: '-' archivo regular, 'd' directorio, 'l' enlace simbólico
chmod 750 backup.sh # Notación octal equivalente a rwxr-x---
chmod u+x script.sh # Añade permiso de ejecución solo al propietarioLaboratorio seguro de archivos y permisos
Ejecuta esta práctica en /tmp para experimentar sin afectar a tus archivos personales:
- Crea un directorio de trabajo temporal y entra en él:
mkdir -p /tmp/lab-fivur && cd /tmp/lab-fivur - Genera un archivo de registro simulado con varias líneas:
printf "INFO inicio\nERROR conexión rechazada\nINFO reintento\nERROR timeout\n" > sistema.log - Filtra únicamente las líneas con
ERRORy cuenta cuántas hay en una sola tubería:grep "ERROR" sistema.log | wc -l - Crea un pequeño script
hola.sh, quítale permisos a otros usuarios y hazlo ejecutable para ti:printf "#!/usr/bin/env sh\necho 'Laboratorio completado'\n" > hola.sh && chmod 700 hola.sh && ./hola.sh
§ Autoevaluación rápida
¿Qué ocurre si ejecutas el comando `echo " nueva línea" > config.conf` sobre un archivo que ya tenía 100 líneas de configuración?