Ce guide d'étude a-t-il tort sur les commandes pour déterminer les types de fichiers?

10

Le guide d'étude LPIC-1 Training and Preparation Guide (Ghori Asghar, ISBN 978-1-7750621-0-3) contient la question suivante ...

Laquelle des commandes suivantes peut être utilisée pour déterminer le type de fichier?

  • (UNE) file
  • (B) type
  • (C) filetype
  • (RÉ) what

... et prétend que la réponse est: "(B) type".

Mais "(A) file" n'est-il pas la bonne réponse?

Je commence à douter de tout le livre.

Amant Linux
la source
11
Je dois dire qu'un livre qui commence par dire «les examens sont basés sur RHEL et Debian, alors utilisons CentOS et Ubuntu» n'inspire pas confiance!
Stephen Kitt
Vous devez contacter l'auteur et l'informer de l'erreur.
dr_

Réponses:

10

Oui, il semble que votre livre soit faux.

La filecommande indique de quel type de fichier il s'agit. A partir du fichier man: "fichier - déterminer le type de fichier".
Quelques exemples:

$  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)

La typecommande est utilisée pour dire si une commande est intégrée ou externe:

$ type file
file is /usr/bin/file
$ type type
type is a shell builtin
Mikael Kjær
la source
6
typeest une fonction intégrée à la plupart des shells, qui nous indique ce qui peut être exécuté (fonction intégrée, alias, fonction, exécutable, etc.). Dans votre cas, cela signifie qu'il n'y a pas d' test.shexécutable (que ce soit dans PATH, ou en tant que fonction intégrée / fonction / alias, etc.).
muru
Vous avez absolument raison. Je n'ai jamais su cela. Cela ne change pas la réponse devrait être filecependant. Je mettrai à jour ma réponse.
Mikael Kjær
Merci pour la réponse, je suis content d'avoir piraté le livre lol
Linux Lover
2

Le type de fichier est normalement déterminé avec file. Ses manétats:

fichier - déterminer le type de fichier

Mais vous pouvez également l'utiliser dans une certaine mesure type. Comparez les deux listes ci-dessous pour:

  • script.pl, un script Perl
  • not_a_script, un fichier vide

En voici une pour le 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

Et voici un pour le fichier vide:

$ 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

Comme vous pouvez le voir, typepeut déterminer si un fichier est exécutable. Est-ce une "détermination du type de fichier" ou non? Eh bien ... d'une manière différente de ce que filepropose. La description de la fonction typeintégrée dans l'homme de Bash est la suivante:

tapez [-aftpP] nom [nom ...]

Sans aucune option, indiquez comment chaque nom serait interprété s'il était utilisé comme nom de commande.

La bonne réponse à la question dans le livre devrait être à mon avis file, parce que c'est ce que cela mandit, et c'est à cela que servent les tests. Ou en d'autres termes, mon premier choix est file.


la source