#!/bin/bash
# idelete.sh : Effacer un fichier grâce à son inode.

#  C'est très utile quand un nom de fichier commence avec un caractère illégal,
#+ comme un ? ou -.

NBARGS=1          # L'argument du nom de fichier doit être passé au script.
E_MAUVAISARGS=70
E_FICHIER_INEXISTANT=71
E_CHANGE_D_ESPRIT=72

if [ $# -ne "$NBARGS" ]
then
  echo "Usage: `basename $0` nomfichier"
  exit $E_MAUVAISARGS
fi  

if [ ! -e "$1" ]
then
  echo "Le fichier \""$1"\" n'existe pas."
  exit $E_FICHIER_INEXISTANT
fi  

inum=`ls -i | grep "$1" | awk '{print $1}'`
# inum = inode (NdT : index node) numéro de fichier
# --------------------------------------------------------------------------
#  Chaque fichier possède un inode contenant ses informations d'adresses
#+ physiques.
# --------------------------------------------------------------------------

echo; echo -n "Effacer vraiment \"$1\" (o/n)? "
# L'option '-v' de 'rm' pose la même question.
read reponse
case "$reponse" in
[nN]) echo "Vous avez changé d'avis."
      exit $E_CHANGE_D_ESPRIT
      ;;
*)    echo "Effacement en cours du fichier \"$1\".";;
esac

find . -inum $inum -exec rm {} \;
#                           ^^
#        Les accolades sont des emplacements réservés
#+       pour la sortie de texte par "find".
echo "Fichier "\"$1"\" effacé !"

exit 0
