post

Tuberías en la shell

tuberías chrome pipe lines
Photo by jiawei cui on Pexels.com

Las tuberías en la programación de la shell en Unix/Linux son una forma poderosa de combinar la salida de un comando con la entrada de otro. A continuación algunos aspectos claves sobre su uso.

Aspectos claves

  1. Conectar Comandos:
    • Las tuberías permiten conectar la salida estándar de un comando con la entrada estándar de otro, creando una secuencia de procesos conectados.
    • Ejemplo: ls -l | grep "file" – La lista de archivos del comando ls se filtra para mostrar solo las líneas que contienen la palabra “file” con el comando grep.
  2. Secuencias de Comandos:
    • Puedes encadenar varios comandos mediante tuberías para realizar operaciones más complejas.
    • Ejemplo: cat archivo.txt | grep "patrón" | sort – Lee un archivo, filtra líneas que contienen un patrón y luego ordena esas líneas.
  3. Filtros y Procesamiento de Texto:
    • Las tuberías son útiles con comandos de procesamiento de texto como grep, sed, awk y cut.
    • Ejemplo: ps aux | grep "proceso" – Filtra la lista de procesos para mostrar solo aquellos que contienen el nombre del proceso.
  4. Redirección de Salida:
    • Puedes redirigir la salida de una cadena de tuberías a un archivo.
    • Ejemplo: comando1 | comando2 > salida.txt – La salida de comando2 se guarda en el archivo salida.txt.
  5. Uso en Scripts:
    • Las tuberías son comúnmente utilizadas en scripts de shell para automatizar tareas complejas.
    • Ejemplo en un script: ls | grep "patrón" | awk '{print $2}' – Lista archivos, filtra por un patrón y muestra el segundo campo.
  6. Proceso en Segundo Plano:
    • Puedes ejecutar comandos en segundo plano con & al final de una cadena de tuberías.
    • Ejemplo: comando1 | comando2 & – Ejecuta comando1 y comando2 en segundo plano.
  7. Filtrar y Transformar Datos:
    • Las tuberías son ideales para filtrar datos y transformarlos según sea necesario.
    • Ejemplo: cat registro.txt | grep "error" | awk '{print $3}' – Muestra la tercera columna de líneas que contienen “error” en un registro.
  8. Interactividad:
    • Al usar tuberías, puedes interactuar en tiempo real con datos a medida que fluyen a través de la cadena de comandos.

Su uso es una forma flexible y poderosa de trabajar con flujos de datos en la línea de comandos, permitiendo la construcción de procesos complejos mediante la combinación de comandos más simples y especializados.

Ejemplos

Listar archivos y filtrar por extensión:

ls -l | grep ".txt"

Con este comando se lista los archivos en el directorio actual y filtra solo aquellos que tienen la extensión “.txt”.

Contar líneas en un archivo:

cat archivo.txt | wc -l

Utilizando cat para mostrar el contenido del archivo y wc -l para contar las líneas en ese contenido.

Buscar archivos grandes en un directorio:

du -h | sort -rh | head

du -h muestra el tamaño de los archivos y directorios, sort -rh ordena por tamaño de manera descendente, y head muestra las primeras líneas (los archivos más grandes).

Contar palabras únicas en un archivo de texto:

cat texto.txt | tr -s ' ' '\n' | sort | uniq -c

Usa tr para reemplazar espacios por saltos de línea, sort para ordenar las palabras, y uniq -c para contar las ocurrencias únicas de cada palabra.

Obtener información de uso de la CPU:

ps aux | sort -nk 3 | tail

Lista los procesos ordenados por uso de CPU en orden ascendente y muestra los últimos procesos en ejecución.


Buscar errores en el registro del sistema:

cat /var/log/syslog | grep "error"

Muestra las líneas en el registro del sistema que contienen la palabra “error”.

Crear un archivo de resumen de directorios:

find /ruta/del/directorio -type f -exec du -h {} + | sort -rh > resumen.txt

Utiliza find para encontrar archivos, du -h para obtener sus tamaños, y sort para ordenar el resumen por tamaño en orden descendente.

Buscar procesos y mostrar información específica:

ps aux | grep "proceso" | awk '{print $1, $2, $11}'

Lista procesos que contienen la palabra “proceso” y muestra información específica utilizando awk.

Estos ejemplos demuestran cómo las tuberías permiten combinar de manera eficiente la salida de un comando con la entrada de otro, brindando flexibilidad y potencia en la manipulación y análisis de datos en la línea de comandos.

Leave a Reply

Your email address will not be published. Required fields are marked *