#!/bin/bash

#########################################
# Autor: Samuel Jarque Abizanda         #
# Programa: rmkernel                    #
# Fecha: 03/02/2009                     #
# version: 1.0                          #
# Descripcion: Elimina kernels antiguos #
#########################################

# Variable para contar el numero de lineas que hay en los paquetes que coinciden con linux-image
numLineas=$(dpkg --get-selections | grep linux-image | wc -l)
# Variable para saber el kernel actual en el sistema
kernelActual=$(uname -r)
# Paquete que aparece y que no hay que eliminar
noEliminar="linux-image-generic"
# Contador para hacer mejor la presentacion
j=1
# Array donde se almacenan los nombres de los paquetes de los kernels instalados
declare -a array

echo -e "\n - Kernels instalados en el sistema:"
echo -e "\t0. Salir"

# Bucle para imprimir por pantalla los nombres de los paquetes de los kernels instalados
for ((i=1; i<=$numLineas; i++))
do
  # Obtenemos el nombre del kernel i-esimo de la lista
  lineaActual=$(dpkg --get-selections | grep linux-image | head -n $i | tail -n 1 | cut -f 1)
  # Compruebo si es el kernel que se esta usando ahora mismo
  esKernelActual=$(echo $lineaActual | grep $kernelActual)
  # Compruebo que el nombre no sea linux-image-generic
  if [ "$lineaActual" != $noEliminar ]
  then
    # La misma comprobacion de antes (linea actual = kernel actual)
    if [ ${esKernelActual:-"linux-image-generic"} = "$lineaActual" ]
    then
      echo -e "\t$j. $lineaActual --> Siendo usado ahora"
    else
      echo -e "\t$j. $lineaActual"
    fi
    # Alamaceno en un array el nombre del paquete
    array[$j]=$lineaActual
    # Incremento el contador que nos hace la vida mas bonita
    j=$(($j+1))
  fi
done

# Le pido al usuario que introduzca por teclado el kernel que desea eliminar
echo -e "\n Escoge el kernel que quieres eliminar (0-$(($j-1))): "
read seleccion
# Si la seleccion es 0 entonces salimos del script
if [ $seleccion -eq 0 ]
then
  exit 0
fi
# Le pregunto al usuario si esta seguro de que desea eliminar el kernel
echo -e " - Esta seguro que desea eliminar ${array[$seleccion]} (y-n)"
read seguro

# En caso afirmativo lo borro
if [ $seguro = y ]
then
  echo -e " Eliminando ${array[$seleccion]} ..."
  sudo aptitude purge ${array[$seleccion]}
fi
# Salimos del script
exit 0

