Learn

Pipes y redirecciones

Terminal

Componer comandos con |, >, >>, < para convertir el terminal en una cadena de montaje.

Requisitos previos

El verdadero poder del terminal viene de la composición. ls, grep y wc por separado son útiles. Pero encadenados con un pipe, resuelven problemas que en otro entorno necesitarían una pequeña app.

stdin, stdout, stderr

Cada comando tiene tres "flujos" implícitos:

  • stdin (entrada estándar): lo que lee como entrada.
  • stdout (salida estándar): lo que escribe normalmente.
  • stderr (salida de error): lo que escribe cuando algo falla.

Por defecto, stdout y stderr aparecen en el terminal. Las redirecciones permiten enviarlos a otro sitio.

Redirigir hacia un archivo

shell
ls > archivos.txt
echo "hola" > mensaje.txt

> envía stdout a un archivo. Atención: sobreescribe el archivo si ya existe.

shell
echo "primera línea" > log.txt
echo "segunda línea" >> log.txt

>> añade al final del archivo en lugar de sobreescribir. Imprescindible para los logs.

Redirigir los errores

shell
ls /carpeta-inexistente 2> errores.txt
ls /carpeta-inexistente 2>> errores.txt
comando &> todo.txt
  • 2> redirige stderr (los errores) a un archivo.
  • &> redirige stdout y stderr juntos. Útil cuando quieres capturar todo lo que produce un comando.

El pipe: encadenar comandos

El pipe | envía stdout de un comando a stdin del siguiente:

shell
ls | grep README
cat acceso.log | grep ERROR | wc -l
ps aux | grep node
  • ls | grep README: lista los archivos y conserva solo los que contienen "README".
  • cat acceso.log | grep ERROR | wc -l: cuenta cuántas líneas "ERROR" hay en el archivo de log.
  • ps aux | grep node: busca los procesos Node.js en ejecución.

Ejemplo práctico completo

Encontrar cuántos archivos .js hay en la carpeta actual:

shell
ls | grep ".js$" | wc -l

Extraer las líneas de error de un archivo de log y guardarlas:

shell
cat app.log | grep ERROR > errores-hoy.txt
Redirecciones (manual GNU Bash)

Marca los pasos para desbloquear lo siguiente

Volver al curso