Se for apenas entre o ELF e o script, talvez você não precise de file
. Com bash
:
IFS= LC_ALL=C read -rn4 -d '' x < file
case $x in
($'\x7fELF') echo ELF;;
("#!"*) echo script;;
(*) echo other;;
esac
( -d ''
(para usar o caractere NUL como delimitador) é para contornar o fato de que bash
' read
simplesmente ignora os bytes NUL na entrada).
Veja também: