FILE(1) General Commands Manual FILE(1) NUME file - determina tipul de fiier SINOPSIS file [-bcdEhiklLNnprsSvzZ0] [--apple] [--exclude-quiet] [--extension] [--mime-encoding] [--mime-type] [-e nume-test] [-F separator] [-f fiier-de-nume] [-m fiiere-magice] [-P nume=valoare] file ... file -C [-m fiiere-magice] file [--help] DESCRIERE Aceasta pagina de manual documenteaza versiunea 5.46 a comenzii file. file testeaza fiecare argument in incercarea de a-l clasifica. Exista trei seturi de teste, efectuate in aceasta ordine: teste ale sistemului de fiiere, teste magice i teste lingvistice. Primul test care reuete provoaca imprimarea tipului de fiier. Tipul afiat va conine de obicei unul dintre cuvintele text (fiierul conine doar caractere de imprimare i cateva caractere de control comune i este probabil sigur de citit pe un terminal ASCII), executable (fiierul conine rezultatul compilarii unui program intr-o forma inteligibila pentru un nucleu UNIX sau altul) sau data care inseamna orice altceva (datele sunt de obicei "binare" sau neimprimabile). Excepiile sunt formate de fiiere bine cunoscute (fiiere core, arhive tar) despre care se tie ca conin date binare. Atunci cand modificai fiiere magice sau programul in sine, asigurai-va ca pastrai aceste cuvinte cheie. Utilizatorii depind de faptul ca tiu ca toate fiierele ce se pot citi dintr-un director au imprimat cuvantul "text". Nu facei ca Berkeley i nu schimbai "shell commands text" in "shell script". Testele sistemului de fiiere se bazeaza pe examinarea raspunsului la un apel de sistem stat(2). Programul verifica pentru a vedea daca fiierul este gol sau daca este un fel de fiier special. Orice tip de fiier cunoscut, adecvat sistemului pe care rulai (socluri, legaturi simbolice sau conducte cu nume (FIFO) pe acele sisteme care le implementeaza) sunt intuite daca sunt definite in fiierul de antet al sistemului . Testele magice sunt utilizate pentru a verifica fiierele cu date in anumite formate fixe. Exemplul canonic este un fiier binar executabil (program compilat) a.out, al carui format este definit in , i eventual in directorul include standard. Aceste fiiere au un "numar magic" stocat intr-un loc special, aproape de inceputul fiierului, care indica sistemului de operare UNIX ca fiierul este un executabil binar i care dintre mai multe tipuri este acesta. Conceptul de numar magic "" a fost aplicat prin extensie fiierelor de date. Orice fiier cu un identificator invariabil la un mic decalaj fix in fiier poate fi de obicei descris in acest fel. Informaiile care identifica aceste fiiere sunt citite din fiierul magic compilat /usr/share/file/misc/magic.mgc sau din fiierele din directorul /usr/share/file/misc/magic daca fiierul compilat nu exista. In plus, daca exista $HOME/.magic.mgc sau $HOME/.magic, acestea vor fi utilizate cu prioritate faa de fiierele magice ale sistemului. Daca un fiier nu corespunde niciuneia dintre intrarile din fiierul magic, acesta este examinat pentru a vedea daca pare a fi un fiier text. Seturile de caractere ASCII, ISO-8859-x, non-ISO 8-bit extended- ASCII (precum cele utilizate pe sistemele Macintosh i IBM PC), UTF-8-encoded Unicode, UTF-16-encoded Unicode i EBCDIC pot fi deosebite prin diferitele intervale i secvene de octei care constituie textul imprimabil in fiecare set. Daca un fiier trece oricare dintre aceste teste, setul sau de caractere este raportat. Fiierele ASCII, ISO-8859-x, UTF-8 i ASCII extins sunt identificate ca "text" deoarece vor putea fi citite de aproape orice terminal; UTF-16 i EBCDIC sunt doar "character data" deoarece, dei conin text, acesta va necesita traducere inainte de a putea fi citit. In plus, file va incerca sa determine alte caracteristici ale fiierelor de tip text. Daca liniile unui fiier sunt terminate prin CR, CRLF sau NEL, in loc de LF, standardul Unix, acest lucru va fi raportat. Fiierele care conin secvene de eludare incorporate sau suprapunere (overstriking) vor fi, de asemenea, identificate. Odata ce file a determinat setul de caractere utilizat intr-un fiier de tip text, acesta va incerca sa determine in ce limba este scris fiierul. Testele de limba cauta anumite iruri de caractere (cf. ) care pot aparea oriunde in primele cateva blocuri ale unui fiier. De exemplu, cuvantul cheie .br indica faptul ca fiierul este cel mai probabil un fiier de intrare troff(1), la fel cum cuvantul cheie struct indica un program C. Aceste teste sunt mai puin fiabile decat cele doua grupuri anterioare, aa ca sunt efectuate la sfarit. Rutinele de testare a limbii testeaza, de asemenea, unele tipuri diverse (cum ar fi arhivele tar(1), fiierele JSON). Orice fiier care nu poate fi identificat ca fiind scris in oricare dintre seturile de caractere enumerate mai sus este considerat a fi "data" (de date). OPIUNI --apple Face ca comanda file sa emita codul tipului de fiier i al creatorului, aa cum este utilizat de versiunile mai vechi ale MacOS. Codul este format din opt litere, prima descriind tipul de fiier, iar ultima creatorul. Aceasta opiune funcioneaza corect numai pentru formatele de fiiere care au definita ieirea in stil apple. -b, --brief Nu precede liniile de ieire cu nume de fiiere (mod scurt). -C, --compile Scrie un fiier de ieire magic.mgc care conine o versiune pre-analizata a fiierului sau directorului magic. -c, --checking-printout Provoaca o imprimare de verificare a formei analizate a fiierului magic. Aceasta este de obicei utilizata impreuna cu opiunea -m pentru depanarea unui nou fiier magic inainte de a-l instala. -d Afieaza informaii interne de depanare la ieirea de eroare standard. -E In cazul erorilor din sistemul de fiiere (fiier care nu a fost gasit etc.), in loc sa trateze eroarea ca pe o ieire obinuita, aa cum impune POSIX, i sa mearga mai departe, emite un mesaj de eroare i iese. -e, --exclude nume-test Exclude testul numit in nume-test din lista de teste efectuate pentru a determina tipul de fiier. Numele valide ale testelor sunt: apptype Tipul de aplicaie EMX (numai pe EMX). ascii Diverse tipuri de fiiere text (acest test va incerca sa ghiceasca codificarea textului, indiferent de valoarea opiunii `encoding'). encoding Diferite codificari ale textului pentru testele soft- magic. tokens Ignorata pentru compatibilitate cu versiunile anterioare. cdf Afieaza detaliile fiierelor de documente compuse (Compound Documents Files).. compress Verifica daca exista fiiere comprimate i cauta in interiorul acestora. csv Verifica fiierele care conin valori separate prin virgula. elf Afieaza detaliile fiierului ELF, cu condiia ca testele soft-magic sa fie activate i ca elf-magic sa fie gasit. json Examineaza fiierele JSON (RFC-7159) prin analizarea lor pentru conformitate. soft Consulta fiierele magice. simh Examineaza fiierele de banda SIMH. tar Examineaza fiierele tar prin verificarea sumei de control a antetului tar de 512 octei. Excluderea acestui test poate oferi o descriere mai detaliata a coninutului prin utilizarea metodei soft-magic. text Un sinonim pentru `ascii'. --exclude-quiet Ca --exclude, dar ignora testele despre care file nu tie. Aceasta este destinata compatibilitaii cu versiunile mai vechi ale file. --extension Afieaza o lista separata prin bare oblice de extensii valide pentru tipul de fiier gasit. -F, --separator separator Utilizeaza irul specificat ca separator intre numele fiierului i rezultatul fiierului returnat. Valoarea implicita este `:'. -f, --files-from fiier-de-nume Citete numele fiierelor care urmeaza sa fie examinate din fiier-de-nume (unul pe linie) inainte de lista de argumente. Fie fiier-de-nume, fie cel puin un argument de nume de fiier trebuie sa fie prezent; pentru a examina intrarea standard, utilizai `-' ca argument de nume de fiier. Reinei ca fiier-de-nume este derulat i numele de fiiere incluse sunt procesate atunci cand este intalnita aceasta opiune i inainte de orice procesare ulterioara a opiunilor. Acest lucru permite procesarea mai multor liste de fiiere cu diferite argumente de linie de comanda la aceeai invocare file. Astfel, daca dorii sa definii delimitatorul, trebuie sa o facei inainte de a specifica lista de fiiere, cum ar fi: "-F @ -f fiier-de-nume", in loc de: "-f fiier-de-nume -F @". -h, --no-dereference Aceasta opiune face ca legaturile simbolice sa nu fie urmarite (pe sistemele care accepta legaturi simbolice). Aceasta este opiunea implicita daca variabila de mediu POSIXLY_CORRECT nu este definita. -i, --mime Determina comanda file sa emita iruri de tip mime in loc de cele mai tradiionale care pot fi citite de om. Astfel, aceasta poate spune `text/plain; charset=us-ascii' in loc de "ASCII text". --mime-type, --mime-encoding La fel ca -i, dar imprima numai elementul (elementele) specificat(e). -k, --keep-going Nu se oprete la prima potrivire, continua. Potrivirile ulterioare vor fi precedate de irul `,,\012-"'. Daca dorii o linie noua, consultai opiunea -r. Modelul magic cu cea mai mare valoare (consultai opiunea -l) apare primul. -l, --list Afieaza o lista de modele i valoarea acestora sortate descrescator in funcie de valoarea magic(5) care este utilizata pentru potrivire (a se vedea i opiunea -k). -L, --dereference Aceasta opiune face ca legaturile simbolice sa fie urmate, la fel ca opiunea cu nume similar din ls(1) (pe sistemele care accepta legaturi simbolice). Aceasta este opiunea implicita daca este definita variabila de mediu POSIXLY_CORRECT. -m, --magic-file magicfiles Specifica o lista alternativa de fiiere i directoare care conin magic. Aceasta poate fi un singur element sau o lista separata prin doua puncte (:). Daca un fiier magic compilat este gasit alaturi de un fiier sau director, acesta va fi utilizat in locul sau. -N, --no-pad Nu completeaza numele fiierelor astfel incat acestea sa se alinieze in ieire. -n, --no-buffer Foreaza ca ieirea standard sa fie golita (flushed) dupa verificarea fiecarui fiier. Acest lucru este util numai daca se verifica o lista de fiiere Aceasta este destinata utilizarii de catre programele care doresc o ieire de tip fiier dintr-o conducta. -p, --preserve-date Pe sistemele care accepta utime(3) sau utimes(2), incearca sa pastreze timpul de acces al fiierelor analizate, pentru a pretinde ca file nu le-a citit niciodata. -P, --parameter nume=valoare Definete diverse limite ale parametrilor. Nume Valoare-implicita Explicaie bytes 1M numarul maxim de octei de citit din fiier elf_notes 256 numarul maxim de note ELF procesate elf_phnum 2K numarul maxim de seciuni de program ELF procesate elf_shnum 32K numarul maxim de seciuni ELF procesate elf_shsize 128MB dimensiunea maxima a seciunii ELF procesate encoding 65K numarul maxim de octei pentru determinarea codificarii indir 50 limita de recursiune pentru magia indirecta name 100 limita numarului de utilizari pentru nume/utilizare magica regex 8K limita de lungime pentru cautarile regex -r, --raw Nu transforma caracterele neimprimabile in \ooo. In mod normal, file transforma caracterele neimprimabile in reprezentarea lor octala. -s, --special-files In mod normal, file incearca doar sa citeasca i sa determine tipul fiierelor de argumente despre care stat(2) raporteaza ca sunt fiiere obinuite. Acest lucru previne problemele, deoarece citirea fiierelor speciale poate avea consecine deosebite. Specificarea opiunii -s face ca file sa citeasca i fiierele argument care sunt fiiere speciale de blocuri sau de caractere. Acest lucru este util pentru determinarea tipurilor de sistem de fiiere ale datelor din partiiile de disc brut, care sunt fiiere speciale de blocuri. De asemenea, aceasta opiune face ca file sa nu ia in considerare dimensiunea fiierului raportata de stat(2), deoarece pe unele sisteme aceasta raporteaza o dimensiune zero pentru partiiile de disc brut. -S, --no-sandbox Pe sistemele in care libseccomp (https://github.com/seccomp/libseccomp) este disponibila, opiunea -S dezactiveaza bancul de probe (sandboxing) care este activat implicit. Aceasta opiune este necesara pentru ca file sa execute programe externe de decomprimare, adica atunci cand opiunea -z este specificata i decompresoarele integrate nu sunt disponibile. Pe sistemele in care bancul de probe nu este disponibil, aceasta opiune nu are niciun efect. -v, --version Afieaza versiunea programului i iese. -z, --uncompress Incearca sa caute in interiorul fiierelor comprimate. -Z, --uncompress-noreport Incearca sa caute in interiorul fiierelor comprimate, dar raporteaza informaii numai despre coninut, nu i despre comprimare. -0, --print0 Emite un caracter nul `\0' dupa sfaritul numelui fiierului. Frumos pentru ieirea cut(1). Acest lucru nu afecteaza separatorul, care este in continuare afiat. Daca aceasta opiune este repetata de mai multe ori, atunci file afieaza doar numele fiierului urmat de un NUL urmat de descriere (sau ERROR: text) urmat de un al doilea NUL pentru fiecare intrare. --help Imprima un mesaj de ajutor i iese. MEDIU Variabila de mediu MAGIC poate fi utilizata pentru a defini numele implicit al fiierului magic. Daca aceasta variabila este definita, atunci file nu va incerca sa deschida $HOME/.magic. file adauga ".mgc" la valoarea acestei variabile, dupa caz. Variabila de mediu POSIXLY_CORRECT controleaza (pe sistemele care accepta legaturi simbolice) daca file va incerca sau nu sa urmeze legaturi simbolice. Daca este activata, atunci file urmeaza legatura simbolica, altfel nu. Acest lucru este controlat i de opiunile -L i -h. FIIERE /usr/share/file/misc/magic.mgc Lista de numere magice compilata implicit. /usr/share/file/misc/magic Directorul care conine fiierele magice implicite. STARE DE IEIRE file va iei cu 0 daca operaia a avut succes sau >0 daca a fost intalnita o eroare. Urmatoarele erori provoaca mesaje de diagnosticare, dar nu afecteaza codul de ieire din program (aa cum cere POSIX), cu excepia cazului in care este specificata -E: o Un fiier nu poate fi gasit o Nu exista permisiunea de a citi un fiier o Tipul fiierului nu poate fi determinat EXEMPLE $ 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 CONSULTAI I hexdump(1), od(1), strings(1), magic(5) CONFORMAREA CU STANDARDELE Se considera ca acest program depaete definiia interfeei FILE(CMD) a Sistemului V, in masura in care se poate determina din limbajul vag coninut in acesta. Comportamentul sau este in mare parte compatibil cu programul System V cu acelai nume. Cu toate acestea, aceasta versiune cunoate mai multa magie, astfel incat va produce rezultate diferite (dei mai precise) in multe cazuri. Singura diferena semnificativa intre aceasta versiune i System V este ca aceasta versiune trateaza orice spaiu alb ca delimitator, astfel incat spaiile din irurile de modele trebuie eludate. De exemplu, >10 string language impress (imPRESS data) intr-un fiier magic existent ar trebui sa fie modificat in >10 string language\ impress (imPRESS data) In plus, in aceasta versiune, daca un ir de modele conine o bara oblica inversa, aceasta trebuie sa fie eludata. De exemplu 0 string \begindata Andrew Toolkit document intr-un fiier magic existent ar trebui sa fie modificat in 0 string \\begindata Andrew Toolkit document Versiunile SunOS 3.2 i ulterioare de la Sun Microsystems includ o comanda file derivata din cea System V, dar cu unele extensii. Aceasta versiune difera de cea a Sun doar in moduri minore. Ea include extensia operatorului `&', utilizat ca, de exemplu, >16 long&0x7fffffff >0 not stripped SECURITATE Pe sistemele pe care este disponibila libseccomp (https://github.com/seccomp/libseccomp), file impune limitarea apelurilor de sistem doar la cele necesare pentru funcionarea programului. Aceasta aplicare nu ofera niciun beneficiu de securitate atunci cand file este solicitat sa decomprime fiiere de intrare care ruleaza programe externe cu opiunea -z. Pentru a permite executarea decompresoarelor externe, trebuie sa se dezactiveze bancul de probe utilizand opiunea -S. DIRECTORUL MAGIC Fiierele magice au fost colectate din diverse surse, in special din USENET, i au fost completate de diveri autori. Christos Zoulas (adresa de mai jos) va colecta inregistrari suplimentare sau corectate ale fiierelor magice. O consolidare a intrarilor in fiierele magice va fi distribuita periodic. Ordinea intrarilor in fiierul magic este semnificativa. In funcie de sistemul pe care il utilizai, ordinea in care sunt puse impreuna poate fi incorecta. Daca vechea dvs. comanda file utilizeaza un fiier magic, pastrai vechiul fiier magic pentru comparaie (redenumii-l in /usr/share/file/misc/magic.orig). ISTORIC A existat o comanda file in fiecare UNIX cel puin de la versiunea Research 4 (pagina de manual din noiembrie 1973). Versiunea System V a introdus o schimbare majora semnificativa: lista externa de tipuri magice. Aceasta a incetinit uor programul, dar l-a facut mult mai flexibil. Acest program, bazat pe versiunea System V, a fost scris de Ian Darwin fara sa se uite la codul sursa al altcuiva. John Gilmore a revizuit codul in detaliu, imbunataindu-l faa de prima versiune. Geoff Collyer a gasit cateva neajunsuri i a furnizat cateva intrari magice in fiiere. Contribuii ale operatorului `&' de Rob McMahon, , 1989. Guy Harris, , a facut multe schimbari din 1993 pana in prezent. Dezvoltarea iniiala i intreinerea din 1990 pana in prezent de Christos Zoulas . Modificat de Chris Lowth , 2000: gestioneaza opiunea -i pentru a emite iruri de tip mime, utilizand un fiier magic alternativ i o logica interna. Modificat de Eric Fischer , iulie 2000, pentru a identifica codurile de caractere i a incerca sa identifice limbile fiierelor non-ASCII. Modificat de Reuben Thomas , 2007-2011, pentru a imbunatai suportul MIME, a fuziona magia MIME i non-MIME, pentru a accepta directoare, precum i fiiere de magie, a aplica multe corecturi de erori, a actualiza i corecta o mulime de numere magice, a imbunatai sistemul de construcie, a imbunatai documentaia i a rescrie legaturile Python in Python pur. Lista contribuitorilor la directorul `magic' (fiiere magice) este prea lunga pentru a fi inclusa aici. tii cine suntei; va mulumim. Numeroi colaboratori sunt enumerai in fiierele sursa. NOTIFICARE JURIDICA Drepturi de autor (C) Ian F. Darwin, Toronto, Canada, 1986-1999. Protejat de drepturile de autor standard Berkeley Software Distribution; a se vedea fiierul COPYING din distribuia sursei. Fiierele tar.h i is_tar.c au fost scrise de John Gilmore din programul sau public tar(1) i nu sunt protejate de licena de mai sus. ERORI Va rugam sa raportai erorile i sa trimitei corecii la sistemul de urmarire a erorilor la https://bugs.astron.com/ sau la lista de discuii la (vizitai mai intai https://mailman.astron.com/mailman/listinfo/file pentru a va abona). DE FACUT Remedierea ieirii astfel incat testele pentru fanioanele MIME i APPLE sa nu fie necesare peste tot, iar ieirea efectiva sa se faca intr-un singur loc. Acest lucru necesita un design. Sugestie: impingei ieirile posibile pe o lista, apoi alegei ultima valoare impinsa (cea mai specifica, se spera) la sfarit sau utilizai o valoare implicita daca lista este goala. Acest lucru nu ar trebui sa incetineasca evaluarea. Gestionarea MAGIC_CONTINUE i imprimarea \012- intre intrari este stangace i complicata; restructurai i centralizai. O parte din logica de codare este codificata in encoding.c i poate fi mutata in fiierele magice daca am avea o adnotare !:charset. Sa se continue eliminarea tuturor erorilor de numere magice. Consultai Debian BTS pentru o sursa buna. Stocarea irurilor arbitrar de lungi, de exemplu pentru modele %s, astfel incat acestea sa poata fi imprimate. Rezolva eroarea Debian #271672. Acest lucru poate fi realizat prin alocarea irurilor intr-un grup de iruri, stocarea grupului de iruri la sfaritul fiierului magic i convertirea tuturor indicatorilor de iruri in distane relative din grupul de iruri. Adaugarea sintaxei pentru decalaje relative dupa nivelul curent (eroarea Debian #466037). Fa ca <> sa funcioneze, adica sa ofere mai multe tipuri MIME. Adauga o biblioteca zip pentru a putea arunca o privire in interiorul documentelor Office2007 pentru a imprima mai multe detalii despre coninutul acestora. Adauga o opiune de imprimare a adreselor URL pentru sursele de descriere a fiierelor. Combina cautarile de scripturi i adauga o modalitate de corelare a numelor executabile cu tipurile MIME (de exemplu, o valoare magica pentru !:mime care face ca irul rezultat sa fie cautat intr-un tabel). Acest lucru ar evita adaugarea aceleiai valori magice in mod repetat pentru fiecare nou interpret hash-bang. Atunci cand un descriptor de fiier este disponibil, putem omite i ajusta memoria tampon in loc de gestionarea memoriei tampon pe care o facem acum. Corectarea "name" i "use" pentru a verifica coerena la momentul compilarii ( "name" duplicat, "use" care indica "name" nedefinit ). Fa "name" / "use" mai eficient prin pastrarea unei liste sortate de nume. Cazul special ,,^" pentru a inversa ordinea de bii ,,endianness" in analizor, astfel incat sa nu trebuiasca sa fie eludat, i documenteaza-l. Daca decalajele specificate intern in fiier depaesc dimensiunea memoriei tampon (variabila HOWMANY din file.h), atunci nu cautam la acel decalaj, ci renunam. Ar fi mai bine daca gestionarea memoriei tampon s-ar face atunci cand descriptorul de fiier este disponibil, astfel incat sa putem cauta in jurul fiierului. Trebuie totui sa fim ateni, deoarece acest lucru are considerente de performana i, prin urmare, de securitate, deoarece se pot incetini lucrurile prin cautarea repetata. Acum exista suport pentru pastrarea unor tampoane separate i pentru a avea distane de la sfaritul fiierului, dar gestionarea interna a tampoanelor necesita inca o revizuire. DISPONIBILITATE Putei obine ultima versiune a autorului original prin FTP anonim la adresa ftp.astron.com in directorul /pub/file/file-X.YZ.tar.gz. TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3: https://www.gnu.org/licenses/gpl-3.0.html sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la translation-team-ro@lists.sourceforge.net Linux 6.13.7-arch1-1 7 aprilie 2024 Linux 6.13.7-arch1-1