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: