Sí, parece que tu libro está equivocado.
El file
El comando dice qué tipo de archivo es. Desde el archivo man:"archivo -- determinar el tipo de archivo".
Algunos ejemplos:
$ file /usr/bin/file
/usr/bin/file: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=ecc4d67cf433d0682a5b7f3a08befc45e7d18057, stripped
$ file activemq-all-5.15.0.jar
activemq-all-5.15.0.jar: Java archive data (JAR)
El type
comando se usa para saber si un comando está incorporado o es externo:
$ type file
file is /usr/bin/file
$ type type
type is a shell builtin
El tipo de archivo normalmente se determina con file
. Es man
estados:
archivo — determinar el tipo de archivo
Pero también puedes, hasta cierto punto, usar type
. Compare los dos listados a continuación para:
script.pl
, un script de Perlnot_a_script
, un archivo vacío
Aquí hay uno para el guión:
$ 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
Y aquí hay uno para el archivo vacío:
$ 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 puedes ver, type
puede determinar si un archivo es ejecutable. ¿Es eso una "determinación del tipo de archivo" o no? Bueno... De una manera diferente a lo que file
proporciona. La descripción del type
incorporado en el hombre de Bash es el siguiente:
escriba [-aftpP] nombre [nombre ...]
Sin opciones, indique cómo se interpretaría cada nombre si se usara como un nombre de comando.
En mi opinión, la respuesta correcta a la pregunta del libro debería ser file
, porque eso es lo que es man
dice, y de eso se trata pasar las pruebas. O en otras palabras, mi primera opción es file
.