Se você estiver usando readlink -e
, isso pressupõe os utilitários básicos do GNU. Mas usar ls
para obter o valor de inode é indireto. Usando stat
(também do mesmo pacote coreutils), você pode obter o valor de inode diretamente. Se você limitar a comparação a inodes, também poderá impedir que links simbólicos que você tenha configurado aponte para o script ser removido.
Aqui está um exemplo:
#!/bin/sh
mynode=$(stat --printf='%i' $(readlink -e "$0"))
while [ $# -ne 0 ]
do
if [ ! -e "$1" ] ; then
echo "File not found."
elif [ -d "$1" ] ; then
echo "Error. You have entered a directory."
else
itnode=$(stat --printf='%i' "$1")
if [ $mynode = $itnode ] ; then
echo "Attempting to delete $0 - operation aborted"
exit 0
fi
echo "$1_$itnode:$(readlink -e "$1")" >> /home/j.t/.restore.info
mv "$1" "/home/j.t/deleted/$1_$itnode"
echo "File '$1' has been moved to the recycle bin."
fi
shift
done