Εγχειρίδια για τη γραμμή εντολών

Man » File Manual online - λεπτομερής διαδικτυακή τεκμηρίωση για τη σελίδα man file

🌍
file — προσδιορισμός τύπου αρχείου

ΣΥΝΤΑΞΗ

file [-bcdEhiklLNnprsSvzZ0] [--apple] [--exclude-quiet] [--extension] [--mime-encoding]
file [--mime-type] [-e testname] [-F διαχωριστικό] [-f όνομααρχείου] [-m αρχεία_μαγείας] [-P όνομα=τιμή]
file ...
file -C [-m αρχεία_μαγείας]
file [--help]

ΠΕΡΙΓΡΑΦΗ

Αυτή η σελίδα εγχειριδίου τεκμηριώνει την έκδοση 5.46 της εντολής file.

Η εντολή file ελέγχει κάθε όρισμα για να το ταξινομήσει. Υπάρχουν τρία σύνολα ελέγχων, τα οποία εκτελούνται με την ακόλουθη σειρά: έλεγχοι συστήματος αρχείων, έλεγχοι "μαγείας" και έλεγχοι γλώσσας. Ο πρώτος έλεγχος που επιτύχει, προκαλεί την εκτύπωση του τύπου αρχείου.

Ο τύπος που εκτυπώνεται συνήθως περιέχει μία από τις λέξεις "text" (το αρχείο περιέχει μόνο χαρακτήρες εκτύπωσης και μερικούς κοινούς χαρακτήρες ελέγχου και πιθανότατα είναι ασφαλές να διαβαστεί σε μια οθόνη ASCII), "executable" (το αρχείο περιέχει το αποτέλεσμα της μεταγλώττισης ενός προγράμματος σε μια μορφή κατανοητή από κάποιον πυρήνα UNIX ή άλλο) ή "data" που σημαίνει οτιδήποτε άλλο (τα δεδομένα είναι συνήθως "δυαδικά" ή μη εκτυπώσιμα). Οι εξαιρέσεις είναι τα καλά γνωστά φορμά αρχείων (αρχεία πυρήνα, αρχεία tar) που είναι γνωστό ότι περιέχουν δυαδικά δεδομένα. Όταν τροποποιείτε αρχεία "μαγείας" ή το ίδιο το πρόγραμμα, φροντίστε να διατηρήσετε αυτές τις λέξεις-κλειδιά. Οι χρήστες βασίζονται στο γεγονός ότι όλα τα αναγνώσιμα αρχεία σε έναν κατάλογο έχουν τη λέξη "text" εκτυπωμένη. Μην κάνετε όπως η Berkeley και μην αλλάξετε το "shell commands text" σε "shell script".

Οι έλεγχοι συστήματος αρχείων βασίζονται στην εξέταση της επιστροφής από μια κλήση συστήματος [stat]({filename}../../stat)(2). Το πρόγραμμα ελέγχει για να δει αν το αρχείο είναι άδειο ή αν είναι κάποιος ειδικός τύπος αρχείου. Οποιεσδήποτε γνωστές μορφές αρχείων κατάλληλες για το σύστημα στο οποίο εκτελείτε (υποδοχές, συμβολικοί σύνδεσμοι ή ονομαστικές σωλήνες (FIFOs) σε αυτά τα συστήματα που τα εφαρμόζουν) υποδεικνύονται εάν ορίζονται στο αρχείο κεφαλίδας του συστήματος <sys/stat.h>.

Οι έλεγχοι "μαγείας" χρησιμοποιούνται για να ελέγξουν αρχεία με δεδομένα σε μια συγκεκριμένη σταθερή μορφή. Το κανονικό παράδειγμα αυτού είναι ένα δυαδικό εκτελέσιμο αρχείο (μεταγλωττισμένο πρόγραμμα) a.out, του οποίου η μορφή ορίζεται στα <elf.h>, <a.out.h> και πιθανώς <exec.h> στον τυπικό κατάλογο περιεχομένων. Αυτά τα αρχεία έχουν έναν "αριθμό μαγείας" που είναι αποθηκευμένος σε ένα συγκεκριμένο σημείο κοντά στην αρχή του αρχείου, ο οποίος ενημερώνει το λειτουργικό σύστημα UNIX ότι το αρχείο είναι ένα δυαδικό εκτελέσιμο αρχείο και ποιος από τους διάφορους τύπους είναι. Η έννοια ενός "αριθμού μαγείας" έχει επεκταθεί σε αρχεία δεδομένων. Οποιοδήποτε αρχείο με έναν αναλλοίωτο αναγνωριστικό σε μια μικρή σταθερή θέση μέσα στο αρχείο μπορεί συνήθως να περιγραφεί με αυτόν τον τρόπο. Οι πληροφορίες που προσδιορίζουν αυτά τα αρχεία διαβάζονται από το /etc/magic και το μεταγλωττισμένο αρχείο "μαγείας" /usr/share/misc/magic.mgc ή τα αρχεία στον κατάλογο /usr/share/misc/magic εάν το μεταγλωττισμένο αρχείο δεν υπάρχει. Επιπλέον, εάν το $HOME/.magic.mgc ή το $HOME/.magic υπάρχει, θα χρησιμοποιηθεί αντί για τα αρχεία "μαγείας" του συστήματος.

--apple
Προκαλεί την εντολή file να εμφανίσει τον τύπο αρχείου και τον κωδικό δημιουργού όπως χρησιμοποιείται στις παλαιότερες εκδόσεις του MacOS. Ο κωδικός αποτελείται από οκτώ γράμματα, το πρώτο περιγράφει τον τύπο αρχείου και τα υπόλοιπα τον δημιουργό. Αυτή η επιλογή λειτουργεί σωστά μόνο για μορφές αρχείων που έχουν οριστεί με έξοδο τύπου apple.

-b, --brief
Μην προθέτετε τα ονόματα αρχείων στις γραμμές εξόδου (σύντομη λειτουργία).

-C, --compile
Δημιουργήστε ένα αρχείο εξόδου magic.mgc που περιέχει μια προ-αναλυμένη έκδοση του αρχείου ή του καταλόγου magic.

-c, --checking-printout
Προκαλέστε μια εκτύπωση ελέγχου της αναλυμένης μορφής του αρχείου magic. Αυτό συνήθως χρησιμοποιείται σε συνδυασμό με την επιλογή -m για να εντοπίσετε σφάλματα σε ένα νέο αρχείο magic πριν από την εγκατάστασή του.

-d
Εμφανίζει εσωτερικές πληροφορίες εντοπισμού σφαλμάτων στο stderr.

-E
Σε σφάλματα συστήματος αρχείων (αρχείο μη βρέθηκε κ.λπ.), αντί να χειρίζεται το σφάλμα ως κανονική έξοδο, όπως ορίζει το POSIX και να συνεχίζει, εκδίδει ένα μήνυμα σφάλματος και τερματίζει.

-e, --exclude testname

Αποκλείει το τεστ με όνομα testname από τη λίστα των τεστ που χρησιμοποιούνται για τον προσδιορισμό του τύπου αρχείου. Τα έγκυρα ονόματα τεστ είναι:

apptype   Τύπος εφαρμογής EMX (μόνο στο EMX).

ascii     Διάφοροι τύποι αρχείων κειμένου (αυτό το τεστ θα προσπαθήσει να μαντέψει την κωδικοποίηση του κειμένου, ανεξάρτητα από την ρύθμιση της επιλογής ‘encoding’).

encoding  Διάφορες κωδικοποιήσεις κειμένου για τεστ soft magic.

tokens    Αγνοείται για λόγους συμβατότητας με παλαιότερες εκδόσεις.

cdf       Εμφανίζει λεπτομέρειες σχετικά με τα αρχεία Compound Document.

compress  Ελέγχει για συμπιεσμένα αρχεία και τα εξετάζει.

csv       Ελέγχει αρχεία CSV (Comma Separated Value).

elf       Εμφανίζει λεπτομέρειες αρχείων ELF, υπό την προϋπόθεση ότι τα τεστ soft magic είναι ενεργοποιημένα και έχει βρεθεί η μαγική υπογραφή elf.

json      Εξετάζει αρχεία JSON (RFC-7159) αναλύοντάς τα για συμμόρφωση.

soft      Χρησιμοποιεί τα αρχεία magic.

simh      Εξετάζει αρχεία SIMH tape.

tar       Εξετάζει αρχεία tar επαληθεύοντας το άθροισμα ελέγχου της κεφαλίδας tar των 512 byte. Η εξαίρεση αυτού του τεστ μπορεί να παρέχει μια πιο λεπτομερή περιγραφή περιεχομένου χρησιμοποιώντας τη μέθοδο soft magic.

text      Συνώνυμο του ‘ascii’.

--exclude-quiet

Όπως το --exclude, αλλά αγνοεί τα τεστ για τα οποία το αρχείο δεν έχει πληροφορίες. Αυτό προορίζεται για συμβατότητα με παλαιότερες εκδόσεις του file.

--extension

Εκτυπώνει μια λίστα με διαχωριστικά με κάθετο (/) των έγκυρων επεκτάσεων για τον τύπο αρχείου που βρέθηκε.

-F, --separator separator

Χρησιμοποιεί την καθορισμένη συμβολοσειρά ως διαχωριστικό μεταξύ του ονόματος αρχείου και του αποτελέσματος αρχείου που επιστρέφεται. Η προεπιλογή είναι ‘:’.

-f, --files-from namefile

Διαβάζει τα ονόματα των αρχείων που θα εξεταστούν από το αρχείο namefile (ένα ανά γραμμή) πριν από τη λίστα των ορισμάτων. Πρέπει να υπάρχει είτε το namefile είτε τουλάχιστον ένα όρισμα ονόματος αρχείου. Για να ελέγξετε την τυπική είσοδο, χρησιμοποιήστε το ‘-’ ως όρισμα ονόματος αρχείου. Σημειώστε ότι το namefile αποσυντίθεται και τα ονόματα αρχείων που περιέχονται σε αυτό υποβάλλονται σε επεξεργασία όταν συναντάται αυτή η επιλογή και πριν από οποιαδήποτε περαιτέρω επεξεργασία επιλογών. Αυτό επιτρέπει την επεξεργασία πολλών λιστών αρχείων με διαφορετικά ορίσματα γραμμής εντολών κατά την ίδια εκτέλεση του file. Επομένως, εάν θέλετε να ορίσετε τον διαχωριστή, πρέπει να το κάνετε πριν καθορίσετε τη λίστα αρχείων, όπως: “-F @ -f namefile”, αντί για: “-f namefile -F @”.

-h, --no-dereference

Αυτή η επιλογή προκαλεί την αποφυγή της ακολουθίας των συμβολικών συνδέσμων (σε συστήματα που υποστηρίζουν συμβολικούς συνδέσμους). Αυτή είναι η προεπιλογή εάν η μεταβλητή περιβάλλοντος POSIXLY_CORRECT δεν έχει οριστεί.

-i, --mime

Προκαλεί την εκτύπωση του file τύπων MIME αντί για τις πιο παραδοσιακές, αναγνώσιμες από τον άνθρωπο, συμβολοσειρές. Έτσι, μπορεί να εμφανίσει το ‘text/plain; charset=us-ascii’ αντί για το “ASCII text”.

--mime-type, --mime-encoding

Όπως το -i, αλλά εκτυπώνει μόνο το καθορισμένο στοιχείο ή στοιχεία.

-k, --keep-going

Μην σταματάτε στην πρώτη αντιστοίχιση, συνεχίστε. Οι επόμενες αντιστοιχίσεις θα έχουν το πρόθεμα ‘\012- ’. (Εάν θέλετε μια νέα γραμμή, δείτε την επιλογή -r.) Το μοτίβο magic με τη μεγαλύτερη ισχύ (δείτε την επιλογή -l) εμφανίζεται πρώτο.


-l, --list
Εμφανίζει μια λίστα με τα μοτίβα και την ισχύ τους, ταξινομημένα κατά φθίνουσα σειρά της ισχύς "magic(5)", η οποία χρησιμοποιείται για την αντιστοίχιση (δείτε επίσης την επιλογή -k).

-L, --dereference
Αυτή η επιλογή προκαλεί την ακολουθία των συμβολικών συνδέσμων, όπως η ομώνυμη επιλογή στο [ls]({filename}../../ls)(1) (σε συστήματα που υποστηρίζουν συμβολικούς συνδέσμους). Αυτό είναι η προεπιλογή εάν η μεταβλητή περιβάλλοντος POSIXLY_CORRECT είναι ορισμένη.

-m, --magic-file magicfiles
Καθορίστε μια εναλλακτική λίστα αρχείων και καταλόγων που περιέχουν μαγικά δεδομένα. Αυτό μπορεί να είναι ένα μόνο στοιχείο ή μια λίστα διαχωρισμένη με άνω και κάτω τελεία. Εάν βρεθεί ένα μεταγλωττισμένο αρχείο μαγικών δεδομένων δίπλα σε ένα αρχείο ή έναν κατάλογο, θα χρησιμοποιηθεί αυτό.

-N, --no-pad
Μην προσθέτετε κενά στα ονόματα αρχείων, ώστε να ευθυγραμμίζονται στην έξοδο.

-n, --no-buffer
Αναγκάστε την έξοδο stdout να εκκαθαρίζεται μετά τον έλεγχο κάθε αρχείου. Αυτό είναι χρήσιμο μόνο εάν ελέγχετε μια λίστα αρχείων. Προορίζεται για χρήση από προγράμματα που θέλουν έξοδο τύπου αρχείου από μια σωλήνωση.

-p, --preserve-date
Σε συστήματα που υποστηρίζουν τις συναρτήσεις utime(3) ή utimes(2), επιχειρήστε να διατηρήσετε τον χρόνο πρόσβασης των αρχείων που αναλύονται, ώστε να φανεί σαν να μην τα έχετε διαβάσει ποτέ.

-P, --parameter name=value
Ορίστε διάφορα όρια παραμέτρων.

Όνομα       Προεπιλογή  Επεξήγηση
bytes       1M      μέγιστος αριθμός byte που θα διαβαστούν από το αρχείο
elf_notes   256         μέγιστος αριθμός ELF σημειώσεων που θα υποβληθούν σε επεξεργασία
elf_phnum   2K      μέγιστος αριθμός τμημάτων προγράμματος ELF που θα υποβληθούν σε επεξεργασία
elf_shnum   32K         μέγιστος αριθμός τμημάτων ELF που θα υποβληθούν σε επεξεργασία
elf_shsize  128MB       μέγιστο μέγεθος τμήματος ELF που θα υποβληθεί σε επεξεργασία
encoding    65K         μέγιστος αριθμός byte για τον προσδιορισμό της κωδικοποίησης
indir       50      όριο αναδρομής για έμμεση μαγεία
name        100         όριο χρήσης για μαγεία τύπου όνομα/χρήση
regex       8K      όριο μήκους για αναζητήσεις regex

-r, --raw
Μην μεταφράζετε μη εκτυπώσιμους χαρακτήρες σε \ooo. Κανονικά, το file μεταφράζει τους μη εκτυπώσιμους χαρακτήρες στην οκταδική τους αναπαράσταση.

-s, --special-files
Κανονικά, το file προσπαθεί να διαβάσει και να προσδιορίσει τον τύπο των αρχείων ορισμάτων, τα οποία η συνάρτηση [stat]({filename}../../stat)(2) αναφέρει ως κανονικά αρχεία. Αυτό αποτρέπει προβλήματα, επειδή η ανάγνωση ειδικών αρχείων μπορεί να έχει ιδιόμορφες συνέπειες. Η καθορισμένη επιλογή -s προκαλεί επίσης την ανάγνωση των αρχείων ορισμάτων που είναι μπλοκ ή χαρακτήρες ειδικών αρχείων. Αυτό είναι χρήσιμο για τον προσδιορισμό των τύπων συστημάτων αρχείων στα δεδομένα στις ακατέργαστες διαμερίσεις δίσκου, τα οποία είναι αρχεία ειδικού μπλοκ. Αυτή η επιλογή προκαλεί επίσης την αγνόηση του μεγέθους αρχείου όπως αναφέρεται από την [stat]({filename}../../stat)(2), επειδή σε ορισμένα συστήματα αναφέρει μηδενικό μέγεθος για τις ακατέργαστες διαμερίσεις δίσκου.

-S, --no-sandbox
Σε συστήματα όπου είναι διαθέσιμη η libseccomp (https://github.com/seccomp/libseccomp), η επιλογή -S απενεργοποιεί τον περιορισμό, ο οποίος είναι ενεργοποιημένος από προεπιλογή. Αυτή η επιλογή είναι απαραίτητη για την εκτέλεση εξωτερικών προγραμμάτων αποσυμπίεσης, δηλαδή όταν καθορίζεται η επιλογή -z και οι ενσωματωμένοι αποσυμπιεστή δεν είναι διαθέσιμοι. Σε συστήματα όπου ο περιορισμός δεν είναι διαθέσιμος, αυτή η επιλογή δεν έχει καμία επίδραση.

Σημείωση: Αυτή η έκδοση του Debian του αρχείου δημιουργήθηκε χωρίς υποστήριξη seccomp, επομένως αυτή η επιλογή δεν έχει καμία επίδραση.

-v, --version

Εμφάνιση της έκδοσης του προγράμματος και έξοδος.

-z, --uncompress

Προσπαθήστε να εξετάσετε το περιεχόμενο συμπιεσμένων αρχείων.

-Z, --uncompress-noreport

Προσπαθήστε να εξετάσετε το περιεχόμενο συμπιεσμένων αρχείων, αλλά αναφέρετε πληροφορίες σχετικά με το περιεχόμενο και όχι σχετικά με τη συμπίεση.

-0, --print0

Εξαγωγή ενός μηδενικού χαρακτήρα ‘\0’ μετά το τέλος του ονόματος του αρχείου. Καλό για χρήση με το cut(1) στην έξοδο. Αυτό δεν επηρεάζει το διαχωριστικό, το οποίο εξακολουθεί να εκτυπώνεται.

Εάν αυτή η επιλογή επαναληφθεί περισσότερες από μία φορές, τότε το αρχείο εκτυπώνει απλώς το όνομα του αρχείου ακολουθούμενο από ένα NUL και στη συνέχεια την περιγραφή (ή ERROR: κείμενο) ακολουθούμενο από ένα δεύτερο NUL για κάθε καταχώρηση.

--help Εκτύπωση ενός μηνύματος βοήθειας και έξοδος.

ΠΕΡΙΒΑΛΛΟΝ

Η μεταβλητή περιβάλλοντος MAGIC μπορεί να χρησιμοποιηθεί για να οριστεί το προεπιλεγμένο όνομα αρχείου μαγείας. Εάν αυτή η μεταβλητή έχει οριστεί, τότε το αρχείο δεν θα προσπαθήσει να ανοίξει το $HOME/.magic. Το αρχείο προσθέτει το ".mgc" στην τιμή αυτής της μεταβλητής, όπως απαιτείται. Η μεταβλητή περιβάλλοντος POSIXLY_CORRECT ελέγχει (σε συστήματα που υποστηρίζουν συμβολικούς συνδέσμους), εάν το αρχείο θα προσπαθήσει να ακολουθήσει συμβολικούς συνδέσμους ή όχι. Εάν έχει οριστεί, τότε το αρχείο ακολουθεί τον συμβολικό σύνδεσμο, διαφορετικά δεν τον ακολουθεί. Αυτό ελέγχεται επίσης από τις επιλογές -L και -h.

ΑΡΧΕΙΑ

/usr/share/misc/magic.mgc Προεπιλεγμένη μεταγλωττισμένη λίστα μαγικών.
/usr/share/misc/magic Κατάλογος που περιέχει τα προεπιλεγμένα αρχεία μαγικών.

ΚΩΔΙΚΟΣ ΕΞΟΔΟΥ

Το αρχείο θα εξέλθει με 0 εάν η λειτουργία ήταν επιτυχής ή >0 εάν συνέβη κάποιο σφάλμα. Τα ακόλουθα σφάλματα προκαλούν διαγνωστικά μηνύματα, αλλά δεν επηρεάζουν τον κώδικα εξόδου του προγράμματος (όπως απαιτείται από το POSIX), εκτός εάν έχει καθοριστεί το -E: Ένα αρχείο δεν μπορεί να βρεθεί Δεν υπάρχει άδεια ανάγνωσης ενός αρχείου Δεν είναι δυνατή η προσδιορισμός του τύπου αρχείου

ΠΑΡΑΔΕΙΓΜΑΤΑ

$ file file.c file /dev/{wd0a,hda}
file.c: C program text
file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
dynamically linked (uses shared libs), stripped
/dev/wd0a: block special (0/0)
/dev/hda: block special (3/0)

$ file -s /dev/wd0{b,d}
/dev/wd0b: data
/dev/wd0d: x86 boot sector

$ file -s /dev/hda{,1,2,3,4,5,6,7,8,9,10}
/dev/hda: x86 boot sector
/dev/hda1: Linux/i386 ext2 filesystem
/dev/hda2: x86 boot sector
/dev/hda3: x86 boot sector, extended partition table
/dev/hda4: Linux/i386 ext2 filesystem
/dev/hda5: Linux/i386 swap file
/dev/hda6: Linux/i386 swap file
/dev/hda7: Linux/i386 swap file
/dev/hda8: Linux/i386 swap file
/dev/hda9: empty
/dev/hda10: empty

$ file -i file.c file /dev/{wd0a,hda}
file.c: text/x-c
file: application/x-executable
/dev/hda: application/x-not-regular-file
/dev/wd0a: application/x-not-regular-file

ΔΕΣ ΕΠΙΣΗΣ

hexdump(1), od(1), strings(1), magic(5)

ΣΥΜΜΟΡΦΩΣΗ ΠΡΟΣ ΤΑ ΠΡΟΤΥΠΑ

Αυτό το πρόγραμμα πιστεύεται ότι υπερβαίνει τον Ορισμό Διεπαφής Συστήματος V του FILE(CMD), όσο το δυνατόν περισσότερο από όσο μπορεί να προσδιοριστεί από τη ασαφή γλώσσα που περιέχεται σε αυτό. Η συμπεριφορά του είναι σε μεγάλο βαθμό συμβατή με το πρόγραμμα System V με το ίδιο όνομα. Αυτή η έκδοση γνωρίζει περισσότερα μαγικά, ωστόσο, επομένως θα παράγει διαφορετική (αν και πιο ακριβή) έξοδο σε πολλές περιπτώσεις.


Η μία σημαντική διαφορά μεταξύ αυτής της έκδοσης και του System V είναι ότι αυτή η έκδοση αντιμετωπίζει οποιονδήποτε λευκό χαρακτήρα ως διαχωριστικό, έτσι ώστε τα κενά στις συμβολοσειρές προτύπων πρέπει να διαφεύγουν. Για παράδειγμα,

>10     string  language impress        (imPRESS data)

σε ένα υπάρχον αρχείο magic, θα πρέπει να αλλάξει σε

>10     string  language\ impress       (imPRESS data)

Επιπλέον, σε αυτή την έκδοση, εάν μια συμβολοσειρά προτύπου περιέχει μια κάθετο (backslash), πρέπει να διαφεύγει. Για παράδειγμα

0      string          \begindata      Έγγραφο Andrew Toolkit

σε ένα υπάρχον αρχείο magic, θα πρέπει να αλλάξει σε

0      string          \\begindata     Έγγραφο Andrew Toolkit

Οι εκδόσεις SunOS 3.2 και μεταγενέστερες από την Sun Microsystems περιλαμβάνουν μια εντολή file που προέρχεται από την έκδοση System V, αλλά με ορισμένες επεκτάσεις. Αυτή η έκδοση διαφέρει από αυτή της Sun μόνο σε μικρές λεπτομέρειες. Περιλαμβάνει την επέκταση του τελεστή '&', που χρησιμοποιείται, για παράδειγμα, ως

>16     long&0x7fffffff >0              δεν έχει αφαιρεθεί

ΑΣΦΑΛΕΙΑ

Σε συστήματα όπου είναι διαθέσιμη η libseccomp (https://github.com/seccomp/libseccomp), η εντολή file επιβάλλει τον περιορισμό των συστημικών κλήσεων μόνο σε αυτές που είναι απαραίτητες για τη λειτουργία του προγράμματος. Αυτή η επιβολή δεν παρέχει κανένα όφελος ασφάλειας όταν η εντολή file ζητείται να αποσυμπιέσει αρχεία εισόδου εκτελώντας εξωτερικά προγράμματα με την επιλογή -z. Για να ενεργοποιηθεί η εκτέλεση εξωτερικών αποσυμπιεστών, πρέπει να απενεργοποιηθεί η απομόνωση (sandboxing) χρησιμοποιώντας την επιλογή -S.

ΚΑΤΑΛΟΓΟΣ MAGIC

Οι εγγραφές αρχείου magic έχουν συλλεχθεί από διάφορες πηγές, κυρίως από το USENET, και έχουν συνεισφέρει διάφοροι συγγραφείς. Ο Christos Zoulas (διεύθυνση παρακάτω) θα συλλέγει επιπλέον ή διορθωμένες εγγραφές αρχείου magic. Μια ενοποιημένη έκδοση των εγγραφών αρχείου magic θα διανέμεται περιοδικά.

Η σειρά των εγγραφών στο αρχείο magic είναι σημαντική. Ανάλογα με το σύστημα που χρησιμοποιείτε, η σειρά με την οποία συγκεντρώνονται μπορεί να είναι εσφαλμένη.

ΙΣΤΟΡΙΚΟ

Υπήρχε μια εντολή file σε κάθε UNIX από τουλάχιστον την Έκδοση Έρευνας 4 (σελίδα man με ημερομηνία Νοέμβριος 1973). Η έκδοση System V εισήγαγε μια σημαντική σημαντική αλλαγή: την εξωτερική λίστα τύπων magic. Αυτό επιβράδυνε ελαφρώς το πρόγραμμα, αλλά το έκανε πολύ πιο ευέλικτο.

Αυτό το πρόγραμμα, βασισμένο στην έκδοση System V, γράφτηκε από τον Ian Darwin ⟨_\⟩ χωρίς να εξετάσει τον πηγαίο κώδικα κανενός άλλου.

Ο John Gilmore αναθεώρησε εκτενώς τον κώδικα, κάνοντάς τον καλύτερο από την πρώτη έκδοση. Ο Geoff Collyer βρήκε διάφορες ανεπάρκειες και παρείχε ορισμένες εγγραφές αρχείου magic. Συνεισφορές του τελεστή '&' από τον Rob McMahon, ⟨_\⟩, 1989.

Ο Guy Harris, ⟨_\⟩, έκανε πολλές αλλαγές από το 1993 έως σήμερα.

Κύρια ανάπτυξη και συντήρηση από το 1990 έως σήμερα από τον Christos Zoulas ⟨_\⟩.

Αλλοιωμένο από τον Chris Lowth ⟨_\⟩, 2000: χειρισμός της επιλογής -i για την έξοδο συμβολοσειρών τύπου MIME, χρησιμοποιώντας ένα εναλλακτικό αρχείο magic και εσωτερική λογική.


Τροποποιήθηκε από τον Eric Fischer ⟨_\⟩, Ιούλιος 2000, για να προσδιορίζονται οι κωδικοί χαρακτήρων και να γίνεται προσπάθεια προσδιορισμού των γλωσσών των μη-ASCII αρχείων.

Τροποποιήθηκε από τον Reuben Thomas ⟨_\⟩, 2007-2011, για να βελτιωθεί η υποστήριξη MIME, να συγχωνευθούν οι μαγικές βάσεις δεδομένων MIME και μη-MIME, να υποστηρίζονται κατάλογοι καθώς και αρχεία μαγικών δεδομένων, να εφαρμοστούν πολλές διορθώσεις σφαλμάτων, να ενημερωθούν και να διορθωθούν πολλά μαγικά δεδομένα, να βελτιωθεί το σύστημα δημιουργίας, να βελτιωθεί η τεκμηρίωση και να ξαναγραφούν οι συνδέσεις Python σε καθαρή Python.

Η λίστα των συνεισφερόντων στην «μαγική» βιβλιοθήκη αρχείων είναι πολύ μεγάλη για να συμπεριληφθεί εδώ. Γνωρίζετε ποιοι είστε· ευχαριστούμε. Πολλοί συνεισφέροντες αναφέρονται στα αρχεία πηγής.

ΝΟΜΙΚΗ ΣΗΜΕΙΩΣΗ

Πνευματικά δικαιώματα (c) Ian F. Darwin, Τορόντο, Καναδάς, 1986-1999. Καλύπτεται από τα τυπικά πνευματικά δικαιώματα της διανομής λογισμικού Berkeley· δείτε το αρχείο COPYING στην διανομή πηγής.

Τα αρχεία tar.h και is_tar.c γράφτηκαν από τον John Gilmore από το δημόσιο πρόγραμμα tar(1) και δεν καλύπτονται από την παραπάνω άδεια.

ΣΦΑΛΜΑΤΑ

Παρακαλούμε αναφέρετε σφάλματα και στείλτε διορθώσεις στο σύστημα παρακολούθησης σφαλμάτων στη διεύθυνση https://bugs.astron.com/ ή στη λίστα αλληλογραφίας στη διεύθυνση ⟨_\⟩ (επισκεφτείτε πρώτα τη διεύθυνση https://mailman.astron.com/mailman/listinfo/file για να εγγραφείτε).

ΕΡΓΑ ΣΕ ΕΞΕΛΙΞΗ

Διορθώστε την έξοδο, έτσι ώστε να μην απαιτούνται δοκιμές για τις σημαίες MIME και APPLE παντού και η πραγματική έξοδος να γίνεται μόνο σε ένα μέρος. Αυτό απαιτεί έναν σχεδιασμό. Πρόταση: αποθηκεύστε τις πιθανές εξόδους σε μια λίστα, στη συνέχεια επιλέξτε την τελευταία αποθηκευμένη τιμή (ελπίζουμε, την πιο συγκεκριμένη) στο τέλος ή χρησιμοποιήστε μια προεπιλεγμένη τιμή εάν η λίστα είναι κενή. Αυτό δεν θα πρέπει να επιβραδύνει την εκτέλεση.

Η διαχείριση των MAGIC_CONTINUE και η εκτύπωση χαρακτήρων \012- μεταξύ των εγγραφών είναι περίπλοκη· αναδιατάξτε και κεντρικοποιήστε.

Μερικά από τα λογικά στοιχεία κωδικοποίησης είναι ενσωματωμένα στο encoding.c και μπορούν να μεταφερθούν στα μαγικά αρχεία, εάν είχαμε μια επεξήγηση !:charset.

Συνεχίστε να διορθώνετε όλα τα σφάλματα στα μαγικά δεδομένα. Δείτε το Debian BTS για μια καλή πηγή.

Αποθηκεύστε αυθαίρετα μεγάλες συμβολοσειρές, για παράδειγμα για μοτίβα %s, ώστε να μπορούν να εκτυπωθούν. Διορθώνει το σφάλμα Debian #271672. Αυτό μπορεί να γίνει με την κατανομή συμβολοσειρών σε μια δεξαμενή συμβολοσειρών, την αποθήκευση της δεξαμενής συμβολοσειρών στο τέλος του μαγικού αρχείου και τη μετατροπή όλων των δεικτών συμβολοσειράς σε σχετικές μετατοπίσεις από τη δεξαμενή συμβολοσειρών.

Προσθέστε σύνταξη για σχετικές μετατοπίσεις μετά το τρέχον επίπεδο (σφάλμα Debian #466037).

Κάντε το file -ki να λειτουργεί, δηλαδή να δίνει πολλαπλούς τύπους MIME.

Προσθέστε μια βιβλιοθήκη zip, ώστε να μπορούμε να κοιτάξουμε μέσα στα έγγραφα Office2007 για να εκτυπώσουμε περισσότερες λεπτομέρειες σχετικά με το περιεχόμενό τους.

Προσθέστε μια επιλογή για την εκτύπωση των URL για τις πηγές των περιγραφών των αρχείων.

Συνδυάστε τις αναζητήσεις σε σενάρια και προσθέστε έναν τρόπο αντιστοίχισης ονομάτων εκτελέσιμων αρχείων σε τύπους MIME (π.χ. να έχετε μια μαγική τιμή για !:mime, η οποία προκαλεί την αναζήτηση της προκύπτουσας συμβολοσειράς σε έναν πίνακα). Αυτό θα απέφευγε την επανειλημμένη προσθήκη της ίδιας μαγικής τιμής για κάθε νέο διερμηνέα hash-bang.

Όταν είναι διαθέσιμη μια περιγραφική μεταβλητή αρχείου, μπορούμε να παρακάμψουμε και να προσαρμόσουμε τον ρυθμιστή αντί του περίπλοκου χειρισμού ρυθμιστή που κάνουμε τώρα.


Διορθώστε τα "name" και "use" για να ελέγχετε τη συνέπεια κατά τη διάρκεια της μεταγλώττισης (διπλό "name", "use" που δείχνει σε μη ορισμένο "name"). Κάντε τα "name" / "use" πιο αποδοτικά διατηρώντας μια ταξινομημένη λίστα ονομάτων. Εφαρμόστε ειδική περίπτωση για το σύμβολο "^" για να αντιστρέψετε την αλληλουχία byte στον αναλυτή, έτσι ώστε να μην χρειάζεται να διαφεύγει, και τεκμηριώστε το.

Εάν οι αποσπάσεις που καθορίζονται εσωτερικά στο αρχείο υπερβαίνουν το μέγεθος του buffer (μεταβλητή HOWMANY στο αρχείο file.h), τότε δεν μετακινούμαστε σε αυτή την απόσπαση, αλλά εγκαταλείπουμε. Θα ήταν καλύτερο εάν η διαχείριση του buffer γινόταν όταν είναι διαθέσιμος ο περιγραφέας αρχείου, ώστε να μπορούμε να μετακινούμαστε μέσα στο αρχείο. Πρέπει να είμαστε προσεκτικοί, ωστόσο, επειδή αυτό έχει επιπτώσεις στην απόδοση και, συνεπώς, στην ασφάλεια, επειδή κάποιος μπορεί να επιβραδύνει τα πράγματα επαναλαμβάνοντας τις μετακινήσεις.

Υπάρχει πλέον υποστήριξη για τη διατήρηση ξεχωριστών buffer και για τη χρήση αποσπάσεων από το τέλος του αρχείου, αλλά η εσωτερική διαχείριση του buffer εξακολουθεί να χρειάζεται αναδιάρθρωση.

ΔΙΑΘΕΣΙΜΟΤΗΤΑ

Μπορείτε να λάβετε την πιο πρόσφατη έκδοση του αρχικού δημιουργού μέσω ανώνυμου FTP στο ftp.astron.com στον κατάλογο /pub/file/file-X.YZ.tar.gz.