Crear scripts de shell para procesar la salida de comandos

Red Hat Enterprise LinuxBeginner
Practicar Ahora

Introducción

En este desafío, aprenderás a crear un script de shell básico capaz de procesar la información generada por otros comandos. Esta es una habilidad fundamental para automatizar tareas y extraer datos específicos de las herramientas de línea de comandos. Aprenderás a capturar la salida de un comando, manipular los datos y utilizar esa información procesada dentro de tu propio script. Este ejercicio te ayudará a desarrollar destrezas prácticas de scripting, esenciales para cualquier administrador de sistemas.

Crear un script de shell para procesar la salida de comandos

En este paso, crearás un script de shell que capture la salida del comando ls -l, extraiga información específica (tamaño y nombre del archivo) y la muestre con un formato personalizado. Este ejercicio demuestra cómo analizar la salida de un comando, una tarea muy común en la programación de scripts.

Tareas

  • Crear un script de shell que capture la salida del comando ls -l.
  • Extraer el tamaño y el nombre de cada archivo a partir de dicha salida.
  • Mostrar la información extraída con un formato de salida específico.

Requisitos

  • Crea el script en el directorio ~/project/scripts.

  • Nombra el script como process_ls.sh.

  • El script debe comenzar con el shebang #!/bin/bash.

  • El script debe capturar la salida del comando ls -l y almacenarla en una variable.

  • Para cada archivo listado en la salida de ls -l, extrae su tamaño y su nombre.

  • Muestra el tamaño y el nombre del archivo extraídos con el siguiente formato:

    File size: <file_size> bytes
    File name: <file_name>

    Sustituye <file_size> por el tamaño real en bytes y <file_name> por el nombre real del archivo.

Ejemplo

Supongamos que tienes un directorio con archivos. Al ejecutar tu script, el resultado debería ser similar a este:

[labex@host ~]$ cd ~/project/scripts
[labex@host scripts]$ nano process_ls.sh
[labex@host scripts]$ chmod +x process_ls.sh
[labex@host scripts]$ ./process_ls.sh
File size: 1300 bytes
File name: process_ls.sh
[labex@host scripts]$

Los tamaños y nombres exactos dependerán del contenido de tu directorio actual.

Pistas

  • Puedes usar la sustitución de comandos (por ejemplo, variable=$(command)) para capturar la salida de un comando.
  • Para procesar cada línea de la salida, puedes emplear un bucle while read.
  • El comando ls -l proporciona información detallada. Es posible que necesites herramientas como awk o cut para extraer columnas (campos) específicas de cada línea.
  • Recuerda que la primera línea de la salida de ls -l suele empezar con la palabra "total" y debe omitirse al procesar los archivos individuales.
  • Asegúrate de que tu script tenga permisos de ejecución (chmod +x).
✨ Revisar Solución y Practicar

Resumen

En este desafío, has aprendido a crear un script de shell para procesar la salida de un comando. Específicamente, capturaste la salida de ls -l, extrajiste los tamaños y nombres de los archivos, y los mostraste con un formato limpio. Este ejercicio ha servido para demostrar conceptos clave de scripting como la sustitución de comandos, los bucles while read y el procesamiento de texto con awk. Estas habilidades son cruciales para automatizar tareas, analizar archivos de registro (logs) y extraer datos específicos de diversas herramientas de línea de comandos, requisitos habituales tanto en el examen RHCSA como en la administración diaria de sistemas.