2.3 Tuberías (Pipes) y Redirecciones
¡Prepárate!
- Entenderás el concepto de
stdin,stdoutystderr(entradas y salidas estándar). - Sabrás cómo registrar la salida de los comandos en archivos usando
>y>>. - Aprenderás la esencia de Linux uniendo comandos complejos con Tuberías (
|). - Filtrarás datos masivos en segundos usando
grep,tailywc.
La Filosofía fundamental de Unix dictamina: “Escribe programas que hagan solo una cosa, pero que la hagan perfecta. Luego, escribe programas para trabajar juntos.”
Ninguna herramienta en Linux hace todo. En su lugar, el poder de un Sysadmin reside en usar legos (pequeños comandos aislados) y conectarlos entre sí.
1. Redirecciones: Controlando el flujo
Sección titulada “1. Redirecciones: Controlando el flujo"Normalmente, cuando ejecutas un comando, su resultado se imprime en tu pantalla. Podemos redirigir esta salida directamente a un archivo para guardar este resultado permanentemente.
Los Tres Flujos (Streams) Estándar
Sección titulada “Los Tres Flujos (Streams) Estándar"Cada proceso en Linux nace siempre con tres “tuberías invisibles” conectadas a él:
stdin(0): Entrada estándar. Por defecto es tu teclado.stdout(1): Salida estándar. El resultado exitoso de un comando. Por defecto es tu pantalla.stderr(2): Error estándar. Los mensajes de fallo. También salen por tu pantalla.
Operadores de Redirección
Sección titulada “Operadores de Redirección"-
>(Sobrescribir): Redirige elstdoutreemplazando todo el contenido previo del archivo si este ya existe. Si no existe, lo crea.ventana terminal # Guarda el mensaje anulando el contenido anterior de registro.txtecho "Sistema iniciado" > registro.txt -
>>(Añadir / Append): Redirige elstdoutagregando la salida al final del archivo sin tocar el texto existente. Vital para sistemas de Logs.ventana terminal echo "Nueva alerta de seguridad" >> registro.txt -
2>(Redirigir solo Errores): Supongamos que escaneas un disco entero. La pantalla se llenará de errores “Permiso Denegado”. Puedes limpiar la vista enviando los errores a/dev/null(el agujero negro de Linux).ventana terminal # Muestra los archivos encontrados, pero oculta e ignora los erroresfind / -name "*.conf" 2> /dev/null
2. Tuberías (| PIPES)
Sección titulada “2. Tuberías (| PIPES)"Aquí es donde Linux brilla. El operador de Tubería | toma la Salida Estándar (stdout) del comando a su izquierda, y la introduce como si la hubieras tecleado (Entrada Estándar / stdin) en el comando de la derecha.
comando1 | comando2 | comando3Filtros Esenciales (Coreutils)
Sección titulada “Filtros Esenciales (Coreutils)"Los siguientes comandos están diseñados específicamente para brillar cuando se conectan detrás de un Pipe:
grep: El buscador universal. Filtra e imprime solo las líneas que contienen una palabra o patrón.ventana terminal # Lee un archivo inmenso, y solo imprime las líneas con la palabra "Error"cat /var/log/syslog | grep "Error"less: Paginador. Si la salida de un comando es de miles de líneas y abarrota tu pantalla, ponle| lessy podrás navegarla cómodamente con flechas (presionaqpara salir).wc(Word Count): Cuenta bytes, palabras o, lo más útil, líneas con la bandera-l(lines).headytail: Muestran sólo las 10 primeras (head) o las 10 últimas (tail) líneas de texto.
Ejemplos Prácticos de Sysadmin
Sección titulada “Ejemplos Prácticos de Sysadmin"- Quiero ver todas las IPs caídas y conectadas, pero solo quiero que me muestre las líneas que digan “UP” (conectadas):
ventana terminal ip a | grep "UP" - Quiero saber cuántos procesos en el servidor contienen la palabra “nginx” en su nombre (para saber cuántos workers HTTP hay vivios):
ventana terminal ps aux | grep "nginx" | wc -l
Comprueba tus conocimientos
Sección titulada “Comprueba tus conocimientos"- Si quieres guardar un listado detallado de los archivos de un directorio
/var/logen un archivo llamadoinventario.logsin borrar de casualidad otra información importante que pudiera ya contener ese archivo, ¿qué operador usas?
- Ejecutas un comando engorroso que llena tu pantalla con cientos de líneas rojas de advertencia que no te importan, impidiendo que leas los resultados positivos porque se desplazan muy rápido. ¿Cómo ocultas los errores?
- Quieres listar tu directorio actual, pero dicho directorio contiene 15.000 fotos antiguas. Sólo quieres saber rápidamente y con exactitud cuántas imágenes hay en total. ¿Cómo combinas comandos para esto?