Maybaygiare.org

Blog Network

fișier(1) – Pagina de om Linux

nume

fișier – determinați tipul de fișier

Sinopsis

fișier fișier …

file-C

file

descriere

această pagină manuală documentează versiunea 5.04 a comenzii file.

fișierul testează fiecare argument în încercarea de a-l clasifica. Există trei seturi de teste, efectuate în această ordine: teste ale sistemului de fișiere, teste magice și teste de limbă. Primul test care reușește determină imprimarea tipului de fișier.

tipul tipărit va conține de obicei unul dintre cuvintele text (fișierul conține doar caractere de imprimare și câteva caractere de control comune și este probabil sigur de citit pe un terminal ASCII), executabil (fișierul conține rezultatul compilării unui program într-o formă ușor de înțeles pentru unii UNIXkernel sau altul) sau date care înseamnă orice altceva (datele sunt de obicei binare sau neimprimabile). Excepțiile sunt formate de Fișiere bine cunoscute (fișiere de bază, tararchive) despre care se știe că conțin date binare. Când modificați fișierele magice sau programul în sine, asigurați-vă că păstrați aceste cuvinte cheie. Utilizatorii depind deștiind că toate fișierele care pot fi citite într-un director au cuvântul ‘text’ imprimat. Nu faceți așa cum a făcut Berkeley și schimbați ‘ textul comenzilor shell ‘în’script shell’.

testele sistemului de fișiere se bazează pe examinarea revenirii de la un apel de sistem stat(2). Programul verifică dacă fișierul este gol sau dacă este un fel defișier special. Orice tipuri de fișiere cunoscute adecvate sistemului pe care rulați (prize, legături simbolice sau conducte numite (FIFO) pe acele sisteme care le implementează) sunt intuite dacă sunt definite în fișierul antet al sistemului

testele magice sunt utilizate pentru a verifica fișierele cu date în anumite formate fixe. Exemplul canonic al acestui lucru este un executabil binar (program compilat)un fișier.out, al cărui format este definit în #include <a.out.h >
și, eventual, #includ< exec.h>
în directorul Standard includ. Aceste fișiere au un număr magic stocat într-un anumit loc aproape de începutul fișierului care spune sistemului de operare UNIX că fișierul este un executabil binar și care dintre mai multe tipuri ale acestuia. Conceptul de ‘magie’ a fost aplicat prin extensie fișierelor de date. Orice fișiercu un identificator invariant la un mic decalaj fix în fișier poate fi de obicei descris în acest fel. Informațiile care identifică aceste fișiere sunt citite de lafișierul Magic compilat / usr/share/misc / magic.MGC sau fișierele din directorul /usr/share/misc / magic dacă fișierul compilat nu există. În plus, dacă $acasă/.magie.mgc sau $acasă/.magic există, acesta va fi folosit în preferința pentru sistemul magic files. Dacă/etc / magic există, acestava fi folosit împreună cu alte fișiere magice.

dacă un fișier nu se potrivește cu niciuna dintre intrările din fișierul magic, acesta este examinat pentru a vedea dacă pare a fi un fișier text. ASCII, ISO-8859-x, seturi de caractere non-ISO 8-bitextended-ASCII (cum ar fi cele utilizate pe sistemele Macintosh și IBM PC), Unicode codificat UTF-8, Unicode codificat UTF-16 și seturi de caractere EBCDICPOT fi distinse prin diferitele intervale și secvențe de octeți care constituie text imprimabil în fiecare set. Dacă un fișier trece oricare dintre aceste teste, acestasetul de caractere este raportat. ASCII, ISO-8859-x, UTF-8, și fișierele extended-ASCII sunt identificate ca ‘text’, deoarece acestea vor fi în mare parte ușor de citit pe aproape anyterminal; UTF-16 și EBCDIC sunt doar ‘date de caractere’ deoarece, deși conțin text, textul va necesita traducere înainte de a putea fi citit. În plus, fișierul va încerca să determine alte caracteristici ale fișierelor de tip text. Dacă liniile unui fișier sunt terminate de CR, CRLF sau NEL, în loc de Unix-standard LF, acest lucru va fi raportat. Fișierele care conțin secvențe de evacuare încorporate sau suprasolicitare vor fi, de asemenea, identificate.

odată ce fișierul a determinat setul de caractere utilizat într-un fișier de tip text, acesta va încerca să determine în ce limbă este scris fișierul. Testele lingvistice caută anumite șiruri (cf. # include<nume.h>
) care pot apărea oriunde în primele câteva blocuri ale unui fișier. De exemplu,cuvântul cheie .br indică faptul că fișierul este cel mai probabil un troff(1) fișier de intrare, la fel cum cuvântul cheie struct indică un program C. Aceste teste sunt mai puțin fiabile decât cele două grupuri anterioare, deci sunt efectuate ultima dată. Rutinele languagetest testează, de asemenea, unele diverse (cum ar fi arhivele tar(1)).

orice fișier care nu poate fi identificat ca fiind scris în oricare dintre seturile de caractere enumerate mai sus este pur și simplu declarat a fi ‘date’.

Opțiuni

 -b, --brief

nu prefixați numele fișierelor la liniile de ieșire (mod scurt).

-C, –compila
scrie o magie.fișier de ieșire mgc care conține o versiune pre-parsată a fișierului magic sau directorul.

-c, –verificare-imprimare
cauza o imprimare de verificare a formei parsate a fișierului magic. Acesta este de obicei utilizat împreună cu steagul-m pentru a depana un nou fișier magic înainte de a-l instala.

-e, –excludeți testname
excludeți testul numit în testname din lista testelor efectuate pentru a determina tipul de fișier. Numele valide de testare sunt:

apptype
EMX tip de aplicație (numai pe EMX).

text’ diferite tipuri de fișiere text (Acest test va încerca să ghicească codificarea textului, indiferent de setarea opțiunii ‘codare’).

codificare
codificări de text diferite pentru teste magice moi.

jetoanele caută jetoane cunoscute în fișierele text.

CDF’ imprimă detaliile fișierelor de documente compuse.

compress
verifică și privește în interior fișierele comprimate.

Elf’ imprimă detaliile fișierului ELF.

soft’ consultă fișierele magice.

tar’ examinează fișierele tar.

-F, –separator separator
utilizați șirul specificat ca separator între numele fișierului și rezultatul fișierului returnat. Implicit la’:’.

-f, –files-from namefile
citiți numele fișierelor care urmează să fie examinate din namefile (câte unul pe rând) înainte de lista argumentelor. Fie namefile, fie cel puțin un nume de fișier trebuie să fie prezent; pentru a testa intrarea standard, utilizați ‘-‘ ca argument de nume de fișier.

-h, –no-dereference
opțiunea face ca legăturile simbolice să nu fie urmate (pe sistemele care acceptă legături simbolice). Aceasta este valoarea implicită dacă variabila de mediu POSIXLY_CORRECT nu este definită.

-i, –mime
face ca comanda Fișier să emită șiruri de tip mime, mai degrabă decât cele mai tradiționale care pot fi citite de om. Astfel, se poate spune ‘text/simplu; charset=us-ascii’ mai degrabă decât ‘text ASCII’. Pentru ca această opțiune să funcționeze, fișierul modifică modul în care gestionează fișierele recunoscute de comanda în sine (cum ar fi multe dintre tipurile de fișiere text, directoare etc.) și folosește un fișier ‘magic’ alternativ. (A se vedea secțiunea Fișiere, de mai jos).

–mime-type, –MIME-codare
Like-i, dar imprima numai elementul specificat(e).

-l, –dereference
opțiunea determină urmărirea legăturilor simbolice, ca opțiune asemănătoare în ls(1) (pe sistemele care acceptă legături simbolice). Aceasta este valoarea implicită dacă ENVIRONMENTVARIABLE POSIXLY_CORRECT este definit.

-m, –magic-file magicfiles
specificați o listă alternativă de fișiere și directoare care conțin magie. Acesta poate fi un singur element sau o listă separată de două puncte. Dacă se găsește un fișier Magic compilatde-a lungul unui fișier sau director, acesta va fi folosit în schimb.

-N, –no-pad
Nu pad nume de fișiere, astfel încât acestea să se alinieze în ieșire.

-n, –no-buffer
forța stdout să fie spălată după verificarea fiecărui fișier. Acest lucru este util numai dacă verificați o listă de fișiere. Acesta este destinat a fi utilizat de programe care doresc filetypeoutput dintr-o conductă.

-p, –preserve-date
pe sistemele care acceptă utime(2) sau utimes (2), încercați să păstrați timpul de acces al fișierelor analizate, să pretindeți că fișierul nu le-a citit niciodată.

-r, –raw
Nu traduceți caractere neimprimabile în \ooo. În mod normal, fișierul traduce caractere neimprimabile în reprezentarea lor octală.

-s, –special-files
în mod normal, fișierul încearcă doar să citească și să determine tipul de fișiere argument care stat(2) rapoarte sunt fișiere obișnuite. Acest lucru previne problemele, deoarececitirea fișierelor speciale poate avea consecințe deosebite. Specificarea opțiunii-s face ca fișierul să citească și fișierele de argumente care sunt fișiere speciale block orcharacter. Acest lucru este util pentru determinarea tipurilor de sisteme de fișiere ale datelor din partițiile de disc raw, care sunt fișiere speciale bloc. Această opțiunede asemenea, face ca fișierul să nu ia în considerare dimensiunea fișierului raportată de stat (2), deoarece pe unele sisteme raportează o dimensiune zero pentru partițiile de disc raw.

-v, –version
imprimați versiunea programului și ieșiți.

-z, –decomprima
Încercați să se uite în interiorul fișiere comprimate.

–ajutor
imprimați un mesaj de ajutor și ieșiți.

fișiere

/usr/share/misc/magic.mgc

implicit compilat lista de magie.
/usr/share/misc/magic’ director care conține fișiere magice implicite.

Mediu

variabila de mediu MAGIC poate fi utilizată pentru a seta numele implicit al fișierului magic. Dacă această variabilă este setată, atunci fișierul nu va încerca să deschidă$HOME/.magie. fișier adaugă ‘.mgc ‘ la valoarea acestei variabile, după caz. Variabila de mediu POSIXLY_CORRECT controlează (pe sistemele caresupport link-uri simbolice), dacă fișierul va încerca să urmeze legături simbolice sau nu. Dacă este setat, atunci fișierul urmează symlink, altfel nu. Acest lucru este controlat și de opțiunile-L și-H.

A se vedea, de asemenea,

magic(5), siruri de caractere(1), od(1), hexdump(1,) fișier(1posix)

standarde conformitate

Acest program este considerat a depăși definiția interfață sistem V de fișier(CMD), cât mai aproape se poate determina din limbajul vag conținute în acesta.Comportamentul său este în mare parte compatibil cu programul System V cu același nume. Această versiune cunoaște mai multă magie, totuși, astfel încât va produce o ieșire diferită (deși mai exactă) în multe cazuri.o diferență semnificativă între această versiune și sistemul V este că această versiune tratează orice spațiu alb ca un delimitator, astfel încât spațiile din patternstrings trebuie să fie scăpat. De exemplu,

>10 string language impress (imPRESS data)

într-un fișier magic existent ar trebui schimbat în

>10 string language\ impress (imPRESS data)

în plus, în această versiune, dacă un șir de model conține un backslash, acesta trebuie scăpat. De exemplu

0 string \begindata Andrew Toolkit document

într-un fișier magic existent ar trebui schimbat în

0 string \\begindata Andrew Toolkit document

SunOS releases 3.2 și mai târziu de la Sun Microsystems includ o comandă de fișier derivat din sistemul V unul, dar cu unele extensii. Versiunea mea diferă de soare doar în moduri minore. Acesta include extensia operatorului’&’, folosit ca, de exemplu,

>16 long&0x7fffffff >0 not stripped

Magic Directory

intrările de fișiere magice au fost colectate din diverse surse, în principal USENET, și au contribuit de diverși autori. Christos Zoulas (adresa de mai jos) vasă colecteze intrări suplimentare sau corectate în fișiere magice. O consolidare a intrărilor de fișiere magice va fi distribuită periodic.

ordinea intrărilor în fișierul magic este semnificativă. În funcție de sistemul pe care îl utilizați, ordinea în care sunt puse împreună poate fi incorectă. Dacăcomanda dvs. de fișiere vechi utilizează un fișier magic, păstrați fișierul magic vechi în scopuri de comparație (redenumiți-l în /usr/share/misc/magic.orig).

Exemple

$ file file.c file /dev/{wd0a,hda}file.c: C program textfile: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),

dinamic legate (foloseste libs partajate), dezbrăcat

/dev / wd0a: bloc special (0/0)
/dev/ hda: bloc special (3/0)

$ file-s / dev / wd0{b, d}
/ dev/ wd0b :Date
/ dev / wd0d: sectorul de boot x86

istoric

a existat o comandă de fișiere în fiecare UNIX de la cel puțin versiunea de Cercetare 4 (Pagina manuală din noiembrie 1973). Versiunea System V a introdus unaschimbare majoră semnificativă: lista externă a tipurilor magice. Acest lucru a încetinit ușor programul, dar l-a făcut mult mai flexibil.

acest program, bazat pe versiunea System V, a fost scris de Ian Darwin <[email protected] > fără a privi codul sursă al altcuiva.

John Gilmore a revizuit codul pe larg, făcându-l mai bun decât prima versiune. Geoff Collyer a găsit mai multe inadecvări și a oferit câteva dosare magice. Contribuții ale operatorului’& ‘ de Rob McMahon, [email protected], 1989.

Guy Harris, [email protected], a făcut multe schimbări din 1993 până în prezent.

dezvoltare și întreținere primară din 1990 până în prezent de Christos Zoulas ([email protected]).

modificat de Chris Lowth, [email protected], 2000: Manipulați opțiunea-i pentru a scoate șiruri de tip mime, folosind un fișier magic alternativ și o logică internă.

modificat de Eric Fischer ([email protected]), iulie 2000, pentru identificarea codurilor de caractere și încercarea de a identifica limbile fișierelor non-ASCII.

modificat de Reuben Thomas ([email protected]), 2007-2008, pentru a îmbunătăți suportul MIME și a îmbina magia MIME și non-MIME, directoare de asistență, precum și fișiere ofmagic, aplicați multe remedieri de erori și îmbunătățiți sistemul de construire.

lista contribuitorilor la directorul ‘magic’ (magic files) este prea lungă pentru a fi inclusă aici. Știi cine ești, mulțumesc. Mulți contribuitori sunt listațiîn fișierele sursă.

Aviz juridic

drepturi de autor Ian F. Darwin, Toronto, Canada, 1986-1999. Acoperite de standardul Berkeley Software Distribution copyright; a se vedea fișierul LEGAL.Observați îndistribuția sursei.

fișierele tar.h și is_tar.c au fost scrise de John Gilmore din domeniul său public tar (1) program, și nu sunt acoperite de licența de mai sus.

Bugs

trebuie să existe o modalitate mai bună de a automatiza construcția fișierului Magic din toate glop-urile din Magdir. Ce este?

fișierul folosește mai mulți algoritmi care favorizează viteza față de precizie, astfel poate fi indus în eroare cu privire la conținutul fișierelor text.

suportul pentru fișiere text (în principal pentru limbaje de programare) este simplist, ineficient și necesită recompilare pentru actualizare.

lista cuvintelor cheie din ascmagic aparține probabil fișierului Magic. Acest lucru ar putea fi realizat prin utilizarea unor cuvinte cheie cum ar fi ‘*’ pentru valoarea offset.

se plâng de conflicte în intrările de fișiere magice. Faceți o regulă că intrările magice Sortează în funcție de offset-ul fișierului, mai degrabă decât de poziția din fișierul magic?

această pagină de manual, și în special această secțiune, este prea lungă.

codul de retur

fișierul returnează 0 la succes și non-zero la eroare.

Dacă fișierul numit de operandul de fișier nu există, nu poate fi citit sau tipul fișierului numit de operandul de fișier nu poate fi determinat, aceasta nu este considerată o eroare care afectează starea de ieșire.

disponibilitate

puteți obține cea mai recentă versiune a autorului original prin FTP anonim pe ftp.astron.com în directorul / pub/file / file-X. YZ.gudron.gz

BSD 9 octombrie 2008 BSD

Lasă un răspuns

Adresa ta de email nu va fi publicată.