#!/bin/bash

# Aseguramos que el historial esté volcado en el archivo
history -a

# Guardamos los últimos 20 comandos en una variable
# Importante: Usar comillas siempre al llamar a la variable para mantener los saltos de línea
ULTIMOS_20=$(cat ~/.bash_history | tail -n 20)

# 1. Obtenemos la lista de comandos únicos (la primera palabra)
# Usamos sed para limpiar todo tras el primer espacio y echo para volcar la variable
LISTA_COMANDOS=$(echo "$ULTIMOS_20" | sed -E 's/^([^ ]+).*/\1/' | sort | uniq)

# Recorremos cada comando único
for CMD in $LISTA_COMANDOS; do
    # 2. Contar veces ejecutado
    # Filtramos la variable y contamos líneas con grep
    VECES=$(echo "$ULTIMOS_20" | grep -cE "^$CMD( |$)")

    # 3. Calcular el máximo de argumentos
    MAX_ARGS=0
    
    # Procesamos solo las líneas que empiezan por el comando actual
    #
    while read -r linea; do
        # Contamos palabras y restamos 1 (el nombre del comando)
        total_palabras=$(echo "$linea" | wc -w)
        
        # Evitamos líneas vacías
        if [ "$total_palabras" -gt 0 ]; then
            args=$((total_palabras - 1))
            
            # Actualizamos el máximo si encontramos un nuevo récord
            if [ "$args" -gt "$MAX_ARGS" ]; then
                MAX_ARGS=$args
            fi
        fi
    done <<EOF
$(echo "$ULTIMOS_20" | grep -E "^$CMD( |$)")
EOF

    # 4. Mostrar resultados según el formato
    echo "Comando: $CMD"
    echo "-> Veces ejecutado: $VECES"
    echo "-> Máximo número de argumentos: $MAX_ARGS"
    echo ""
done