Ja, es scheint, als wäre Ihr Buch falsch.
Der file
Der Befehl gibt an, um welche Art von Datei es sich handelt. Aus der man-Datei:"file -- file type bestimmen".
Ein paar Beispiele:
$ 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)
Die type
command wird verwendet, um festzustellen, ob ein Befehl eingebaut oder extern ist:
$ type file
file is /usr/bin/file
$ type type
type is a shell builtin
Der Dateityp wird normalerweise mit file
bestimmt . Es ist man
Zustände:
file — bestimmt den Dateityp
Sie können aber auch bis zu einem gewissen Grad type
verwenden . Vergleichen Sie die beiden folgenden Auflistungen für:
script.pl
, ein Perl-Skriptnot_a_script
, eine leere Datei
Hier ist eine für das Skript:
$ 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
Und hier ist eine für die leere Datei:
$ 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
Wie Sie sehen können, type
kann feststellen, ob eine Datei ausführbar ist. Ist das eine "Bestimmung des Dateityps" oder nicht? Na ja... Anders als bei file
bietet. Die Beschreibung des type
eingebaut in Bashs man ist wie folgt:
geben Sie [-aftpP] name [name ...]
einGeben Sie ohne Optionen an, wie jeder Name interpretiert würde, wenn er als Befehlsname verwendet würde.
Die richtige Antwort auf die Frage im Buch sollte meiner Meinung nach file
sein , denn das ist es man
sagt, und darum geht es beim Bestehen von Tests. Oder anders gesagt, meine erste Wahl ist file
.