Autor: Adriano Scatena
Este proyecto implementa un sistema de gestión de inventario desarrollado íntegramente en Bash.
Se trata de una herramienta de línea de comandos (CLI) interactiva que permite administrar un conjunto de productos almacenados en un archivo de texto estructurado en formato:
nombre,precio,cantidad
El sistema implementa operaciones completas de gestión (CRUD):
- Agregar productos
- Listar productos
- Buscar productos
- Editar registros existentes
- Eliminar registros
- Ordenar productos por precio
El proyecto demuestra dominio práctico de:
- Programación estructurada en Bash
- Validación robusta mediante expresiones regulares
- Manipulación avanzada de archivos de texto
- Uso de utilidades estándar de Unix (
grep,awk,sed,sort,printf) - Control de flujo con estructuras condicionales y bucles
- Formateo de salida con códigos ANSI
- Manejo de errores no fatales
- Interacción continua mediante menú dinámico
Desarrollar una herramienta CLI que permita gestionar un inventario persistente en disco utilizando exclusivamente Bash y utilidades estándar del sistema.
El sistema:
- Valida rigurosamente la entrada del usuario.
- Evita inconsistencias en los datos almacenados.
- Garantiza persistencia en archivo.
- Permite edición y eliminación segura de registros.
- Mantiene una experiencia interactiva clara en consola.
El programa inventory_manager.sh se organiza en funciones independientes que gestionan cada responsabilidad del sistema:
menu()→ Interfaz principalnuevoProducto()→ Validación y carga de nuevos productoslistarProducto()→ Lectura y formateo tabuladobuscarProducto()→ Búsqueda, edición y eliminaciónordenarProducto()→ Ordenamiento por precioimpresionProducto()→ Persistencia en archivogoBack()→ Control de navegaciónhelp()→ Documentación por parámetro-h/--help
El flujo principal se gestiona mediante un bucle while true, manteniendo activa la interacción hasta que el usuario decide finalizar.
Cada línea del archivo de inventario respeta el siguiente esquema:
nombre,precio,cantidad
| Campo | Longitud Máxima | Restricciones | Formato |
|---|---|---|---|
| Nombre | 40 caracteres | No vacío, sin caracteres especiales | Letras y espacios |
| Precio | 20 caracteres | No negativo, puede incluir decimal | Numérico |
| Cantidad | 20 caracteres | Entero positivo | Numérico entero |
Las validaciones se realizan mediante expresiones regulares y estructuras de control.
# Clonar el repositorio
git clone https://github.com/tu-usuario/bash-inventory-manager.git
# Entrar al directorio
cd bash-inventory-manager
# Dar permisos y ejecutar
chmod +x inventory_manager.sh
./inventory_manager.sh./inventory_manager.sh -hUna vez ejecutado el script, el programa se dirige automáticamente al menú principal, desde el cual el usuario debe seleccionar la operación a realizar.
El sistema ofrece cuatro opciones principales. Todas las funciones, una vez finalizadas, permiten:
- Volver al menú principal.
- Salir del programa.
Se accede ingresando 1 en el menú.
- Si es la primera ejecución y no existe archivo de inventario, el programa:
- Crea un archivo base llamado
inventario. - Solicita seleccionar extensión (
.txto.csv).
- Crea un archivo base llamado
- Permite ingresar:
- Nombre
- Precio
- Cantidad
- Implementa:
- Validación doble de cada campo.
- Vista previa antes de confirmar.
- Posibilidad de agregar múltiples productos de manera secuencial.
El sistema garantiza que ningún registro inválido sea persistido.
Se accede ingresando 2.
- Verifica existencia del archivo.
- Comprueba que no esté vacío.
- Muestra todos los productos formateados en columnas para facilitar la lectura.
No requiere acciones adicionales por parte del usuario.
Se accede ingresando 3.
- Solicita un parámetro de búsqueda.
- Permite coincidencias parciales (nombre, precio o cantidad).
- Si el nombre es exacto, muestra únicamente el registro correspondiente.
- Indica el número de línea del archivo donde se encuentra cada coincidencia.
Tras mostrar resultados, se habilitan dos opciones:
1. Editar
- Se selecciona el número de línea.
- Se elige el campo a modificar.
- Se actualiza el registro utilizando edición directa en archivo.
2. Eliminar
- Permite ingresar múltiples líneas separadas por comas.
- Muestra confirmación previa a la eliminación.
- Puede cancelarse antes de ejecutar la acción.
Se accede ingresando 4.
- Ordena los productos de forma creciente por precio.
- Utiliza ordenamiento numérico.
- Presenta los resultados formateados en consola.
Durante toda la ejecución:
- Los errores de entrada no son fatales.
- Siempre se permite reingresar los datos incorrectos.
- No se pierden datos previamente válidos.
- No es necesario reiniciar el programa ante errores.
Este enfoque mejora la experiencia de usuario y evita inconsistencias en el archivo de inventario.
- Bash
- grep
- awk
- sed
- sort
- printf
- Expresiones regulares POSIX
- Manejo de flujos estándar
-
GNU Grep Manual
https://www.gnu.org/software/grep/manual/ -
Sort Command Documentation
https://www.geeksforgeeks.org/sort-command-linuxunix-examples/ -
Bash Reference Manual
https://www.gnu.org/software/bash/manual/ -
Sed Command Documentation
https://www.geeksforgeeks.org/sed-command-in-linux-unix-with-examples/ -
Linux Pipe and Redirection
https://linuxhandbook.com/pipe-redirection/