Sì, sembra che il tuo libro sia sbagliato.
Il file
comando dice che tipo di file è. Dal file man:"file -- determina il tipo di file".
Alcuni esempi:
$ 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)
Il type
command è usato per dire se un comando è interno o esterno:
$ type file
file is /usr/bin/file
$ type type
type is a shell builtin
Il tipo di file è normalmente determinato con file
. È man
afferma:
file — determina il tipo di file
Ma puoi anche usare in una certa misura type
. Confronta i due elenchi di seguito per:
script.pl
, uno script Perlnot_a_script
, un file vuoto
Eccone uno per lo 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
Ed eccone uno per il file vuoto:
$ 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
Come puoi vedere, type
può determinare se un file è eseguibile. È una "determinazione del tipo di file" o no? Beh... In modo diverso rispetto a file
fornisce. La descrizione del type
integrato nell'uomo di Bash è il seguente:
digitare [-aftpP] nome [nome ...]
Senza opzioni, indica come ogni nome verrebbe interpretato se usato come nome di comando.
La risposta corretta alla domanda nel libro dovrebbe essere secondo me file
, perché questo è il suo man
dice, ed è quello che significa superare i test. In altre parole, la mia prima scelta è file
.