Да, похоже, ваша книга неверна.
Команда file
сообщает, что это за файл. Из справочного файла :«файл --определяет тип файла».
Несколько примеров:
$ 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)
Команда type
используется для определения того, является команда встроенной или внешней:
$ type file
file is /usr/bin/file
$ type type
type is a shell builtin
Тип файла обычно определяется с помощью file
. В нем man
говорится:
file — determine file type
Но вы также можете в определенной степени использовать type
. Сравните два списка ниже для:
script.pl
, сценарий Perl not_a_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
А вот еще для пустого файла:
$ 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
Как видите, type
может определить, является ли файл исполняемым.Это "определение типа файла" или нет? Ну... В отличие от того, что предлагает file
. Описание type
встроенного в Баша человека выглядит следующим образом:
type [-aftpP] name [name...]
With no options, indicate how each name would be interpreted if used as a command name.
Правильный ответ на вопрос в книге должен быть, на мой взгляд, file
, потому что это то, о чем говорится в man
, и это то, что касается прохождения тестов. Или, другими словами, мой первый выбор — file
.