Bash Script – DÍA 6

Redirecciones, pipes y ejecución segura: >, >>, 2>, |, &&, ||

(el 80% de la potencia real de Bash está aquí)


1. Objetivo del día

Aprender a controlar:

  • la salida estándar
  • la salida de error
  • la redirección a archivos
  • la combinación de comandos con pipes
  • la ejecución segura con && y ||
  • la captura de errores reales

Esto es lo que permite construir scripts eficientes, limpios y seguros.

Hoy sudamos… pero terminamos siendo profesionales de verdad 😄.


2. Requisitos

  • Días 1–5 completos
  • Especialmente funciones y bucles

3. Redirecciones: escribir y capturar salidas

3.1. Sobrescribir un archivo: >

echo "Hola" > salida.txt

Esto BORRA el contenido anterior del archivo.


3.2. Añadir al final: >>

echo "Línea adicional" >> salida.txt

No borra nada.


3.3. Redirigir errores: 2>

comando_que_falla 2> errores.log
  • 1> es salida estándar (stdout)
  • 2> es salida de error (stderr)

3.4. Guardar salida normal Y errores (muy real)

comando > salida.log 2> errores.log

O mezclarlas juntas:

comando > todo.log 2>&1

2>&1 = “redirige errores donde vaya stdout”.


4. Pipes (|): conectar comandos

Un pipe envía la salida de un comando a otro:

Ejemplo simple:

ls -l | grep ".txt"

Ejemplo real:

ps aux | grep ssh

Ejemplo ultra real en monitorización:

journalctl -p 3 -n 50 | grep "timeout"

Ejemplo para ver los 5 procesos con más CPU:

ps aux | sort -nrk 3 | head -5

5. Ejecución segura con operadores lógicos

5.1. Ejecutar un comando SOLO si el anterior fue bien: &&

ping -c1 google.com && echo "Conectado"

5.2. Ejecutar un comando SOLO si el anterior falla: ||

ping -c1 google.com || echo "Sin conexión"

5.3. Cadena de comandos segura

cp archivo.txt /backup/ && echo "Copia OK" || echo "Copia FALLÓ"

Muy útil en scripts de backup o despliegue.


6. Combinando pipes + redirecciones + seguridad

6.1. Buscar errores y guardarlos en un archivo

journalctl -p 3 -n 100 | grep "ERROR" > errores.txt

6.2. Guardar salida normal y errores SEMÁNTICAMENTE

curl http://localhost 1>ok.log 2>errores.log

6.3. Pipeline con “fallback”

ping -c1 "$host" > /dev/null 2>&1 \
    && echo "$host OK" \
    || echo "$host FAIL"

Esto es exactamente lo que se usa en scripts de health-check.


7. Capturar salida de un comando dentro del script

Muy usado para obtener valores.

fecha=$(date)
host=$(hostname)
usuarios=$(who | wc -l)

Usos reales:

ip=$(hostname -I | awk '{print $1}')
cpu=$(top -bn1 | grep "Cpu" | awk '{print $2}')

8. Práctica guiada (20–30 minutos)

8.1. Crear archivo con errores

ls carpeta_inexistente > salida.txt 2> error.txt

8.2. Buscar procesos usando pipes

ps aux | grep bash

8.3. Contar procesos ssh

ps aux | grep ssh | wc -l

8.4. Hacer un health-check seguro

ping -c1 google.com >/dev/null 2>&1 && echo OK || echo FAIL

8.5. Guardar logs en un archivo

journalctl -p 3 -n 20 | tee errores.txt

(tee = muestra en pantalla y guarda.)


9. Checklist del Día 6

  • Usas > y >> correctamente
  • Rediriges errores con 2>
  • Combinas stdout y stderr
  • Conectas comandos con pipes
  • Usas && y || para ejecutar de forma segura
  • Capturas salidas con $( )
  • Puedes hacer health-checks seguros

Si está todo marcado → Día 6 superado.


10. Ejercicio sugerido

Crea un script:

analiza_log.sh

Que haga:

  1. Reciba un archivo de log como argumento
  2. Cuente cuántas veces aparece “error”
  3. Cuente cuántas veces aparece “timeout”
  4. Muestre las últimas 20 líneas
  5. Guarde un informe en resultado.txt usando redirecciones

Ejemplo de salida:

Errores: 5
Timeouts: 2
Últimas líneas guardadas en resultado.txt

11. Día 6 completado

Hoy has aprendido lo que separa a un usuario de terminal de un verdadero script creator profesional.

Mañana llega EL GRAN FINAL:

👉 DÍA 7 — Proyecto final: Script de chequeo completo de un servidor

Será un script real, profesional y digno de producción, basado en:

  • funciones
  • bucles
  • argumentos
  • pipes
  • redirecciones
  • ejecución segura
  • lectura de archivos

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies