O tipo de arquivo é normalmente determinado com file. Seus manestados:
file - determina o tipo de arquivo
Mas você também pode, em certa medida, usar type. Compare as duas listagens abaixo para:
script.pl, um script Perl
not_a_script, um arquivo vazio
Aqui está um para o script:
$ ls
script.pl
$ file script.pl
script.pl: Perl script text executable
$ type script.pl
bash: type: script.pl: not found
$ type ./script.pl
./script.pl is ./script.pl
E aqui está uma para o arquivo vazio:
$ ls not_a_script
not_a_script
$ file not_a_script
not_a_script: empty
$ type not_a_script
bash: type: not_a_script: not found
$ type ./not_a_script
bash: type: ./not_a_script: not found
Como você pode ver, typepode determinar se um arquivo é executável. Isso é uma "determinação do tipo de arquivo" ou não? Bem ... De uma maneira diferente do que filefornece. A descrição do typebuiltin no homem de Bash é a seguinte:
digite [-aftpP] name [name ...]
Sem opções, indique como cada nome seria interpretado se usado como um nome de comando.
A resposta correta para a pergunta do livro deve estar na minha opinião file, porque é isso que mandiz e é disso que se trata a aprovação nos testes. Ou, em outras palavras, minha primeira escolha é file.