table of contents
- bookworm-backports 4.26.0-1~bpo12+1
- testing 4.26.0-1
- unstable 4.26.0-1
MAGIC(5) | File Formats Manual | MAGIC(5) |
NUME¶
magic
—
fișier de model magic al comenzii
«file»
DESCRIERE¶
Această pagină de manual documentează formatul fișierelor magice utilizat de comanda file(1), versiunea 5.44. Comanda file(1) identifică tipul unui fișier folosind, printre alte teste, un test pentru a verifica dacă fișierul conține anumite “„modele magice””. Baza de date a acestor “„modele magice”” se află de obicei într-un fișier binar din /usr/share/misc/magic.mgc sau într-un director de fișiere de fragmente de modele magice din textul sursă din /usr/share/misc/magic. Baza de date specifică ce modele trebuie testate, ce mesaj sau tip MIME trebuie afișat dacă se găsește un anumit model și informații suplimentare care trebuie extrase din fișier.
Formatul fișierelor de fragmente sursă care sunt utilizate pentru crearea acestei baze de date este următorul: Fiecare linie a unui fișier de fragmente specifică un test care urmează să fie efectuat. Un test compară datele care încep la o anumită poziție în fișier cu o valoare de octet, un șir de caractere sau o valoare numerică. Dacă testul reușește, se imprimă un mesaj. Linia este formată din următoarele câmpuri:
poziția
- Un număr care specifică poziția (în
octeți) în fișier a datelor care urmează
să fie testate. Această poziție poate fi un
număr negativ dacă este:
- Prima poziție directă a intrării magice (la nivelul de continuare 0), caz în care este interpretată ca o poziție de la sfârșitul fișierului, mergând înapoi. Acest lucru funcționează numai atunci când este disponibil un descriptor de fișier pentru fișier și acesta este un fișier obișnuit.
- O poziție de continuare în raport cu
sfârșitul ultimului câmp de nivel superio.
(
&
).
tipul
- Tipul de date care urmează să fie testate. Valorile posibile
sunt:
byte
- O valoare de un octet.
short
- O valoare de doi octeți în ordinea nativă de octeți a acestei mașini.
long
- O valoare de patru octeți în ordinea nativă de octeți a acestei mașini.
quad
- O valoare de opt octeți în ordinea nativă de octeți a acestei mașini.
float
- Un număr cu virgulă mobilă IEEE pe 32 de biți, cu precizie simplă, în ordinea nativă a octeților acestei mașini.
double
- Un număr cu virgulă mobilă IEEE pe 64 de biți, cu precizie dublă, în ordinea nativă a octeților acestei mașini.
string
- Un șir de octeți. Specificarea tipului de șir
poate fi urmată opțional de o opțiune
/<width>(lățimea) și opțional de un
set de fanioane /[bCcftTtWw]*. Lățimea limitează
numărul de caractere care urmează să fie copiate.
Zero înseamnă toate caracterele. Sunt acceptate
următoarele fanioane:
- b
- Forțează testarea fișierelor binare.
- C
- Utilizează potrivirea insensibilă la majuscule: caracterele în majuscule din magic se potrivesc atât cu caracterele în minuscule, cât și cu cele în majuscule din țintă, în timp ce caracterele în minuscule din magic se potrivesc numai cu caracterele în majuscule din țintă.
- c
- Utilizați potrivirea insensibilă la minuscule: caracterele cu minuscule din magic se potrivesc atât cu caracterele în minuscule, cât și cu cele în majuscule din țintă, în timp ce caracterele în majuscule din magic se potrivesc numai cu caracterele în majuscule din țintă. Pentru a realiza o potrivire completă insensibilă la majuscule, specificați atât “c”, cât și “C”.
- f
- Solicită ca șirul de caractere potrivit să fie un cuvânt complet, nu un cuvânt parțial potrivit.
- T
- Decupează șirul de caractere, adică spațiile albe anterioare și posterioare
- t
- Forțează testarea fișierelor text.
- W
- Spațiu alb compact în țintă, care
trebuie să conțină cel puțin un
caracter de spațiu alb. Dacă magia are
n
spații goale consecutive, ținta trebuie să aibă cel puținn
spații goale consecutive pentru a se potrivi. - w
- Tratează fiecare spațiu liber din magic ca un spațiu liber opțional. Acesta este șters înainte ca șirul să fie imprimat.
pstring
- Un șir în stil Pascal în care primul
octet/short/int este interpretat ca lungimea fără semn.
Lungimea implicită este octetul și poate fi
specificată ca modificator. Sunt acceptate următoarele
modificatoare:
- B
- O lungime de un octet (implicit).
- H
- O lungime big endian de 2 octeți.
- h
- O lungime little endian de 2 octeți.
- L
- O lungime big endian de 4 octeți.
- l
- O lungime little endian de 4 octeți.
- J
- Lungimea se include pe sine în calculul său.
date
- O valoare de patru octeți interpretată ca o dată UNIX.
qdate
- O valoare de opt octeți interpretată ca o dată UNIX.
ldate
- O valoare de patru octeți interpretată ca o dată în stil UNIX, dar interpretată ca oră locală și nu ca UTC.
qldate
- O valoare de opt octeți interpretată ca o dată în stil UNIX, dar interpretată ca oră locală și nu ca UTC.
qwdate
- O valoare de opt octeți interpretată ca o dată în stilul Windows.
beid3
- O lungime ID3 de 32 de biți în ordinea octeților big-endian.
beshort
- O valoare de doi octeți în ordinea octeților big-endian.
belong
- O valoare de patru octeți în ordinea octeților big-endian.
bequad
- O valoare de opt octeți în ordinea octeților big-endian.
befloat
- Un număr cu virgulă mobilă IEEE pe 32 de biți, cu precizie simplă, în ordinea octeților big-endian.
bedouble
- Un număr cu virgulă mobilă IEEE pe 64 de biți, cu precizie simplă, în ordinea octeților big-endian.
bedate
- O valoare de patru octeți în ordinea octeților big-endian, interpretată ca o dată Unix.
beqdate
- O valoare de opt octeți în ordinea octeților big-endian, interpretată ca o dată Unix.
beldate
- O valoare de patru octeți în ordinea octeților big-endian, interpretată ca o dată în stil UNIX, dar interpretată ca oră locală în loc cat UTC.
beqldate
- O valoare de opt octeți în ordinea octeților big-endian, interpretată ca o dată în stil UNIX, dar interpretată ca oră locală în loc cat UTC.
beqwdate
- O valoare de opt octeți în ordinea octeților big-endian, interpretată ca o dată în stilul Windows.
bestring16
- Un șir Unicode (UCS16) de doi octeți în ordinea octeților big-endian.
leid3
- O lungime ID3 de 32 de biți în ordinea octeților little-endian.
leshort
- O valoare de doi octeți în ordinea octeților little-endian.
lelong
- O valoare de patru octeți în ordinea octeților little-endian.
lequad
- O valoare de opt octeți în ordinea octeților little-endian.
lefloat
- Un număr cu virgulă mobilă IEEE pe 32 de biți, cu precizie simplă, în ordinea octeților little-endian.
ledouble
- Un număr cu virgulă mobilă IEEE pe 64 de biți, cu precizie dublă, în ordinea octeților little-endian.
ledate
- O valoare de patru octeți în ordinea octeților little-endian, interpretată ca o dată UNIX.
leqdate
- O valoare de opt octeți în ordinea octeților little-endian, interpretată ca o dată UNIX.
leldate
- O valoare de patru octeți în ordinea octeților little-endian, interpretată ca o dată în stil UNIX, dar interpretată ca oră locală în loc de oră UTC.
leqldate
- O valoare de opt octeți în ordinea octeților little-endian, interpretată ca o dată în stil UNIX, dar interpretată ca oră locală în loc de oră UTC.
leqwdate
- O valoare de opt octeți în ordinea octeților little-endian, interpretată ca o dată în stilul Windows.
lestring16
- Un șir Unicode (UCS16) de doi octeți în ordinea octeților little-endian.
melong
- O valoare de patru octeți în ordinea octeților middle-endian (PDP-11).
medate
- O valoare de patru octeți în ordinea octeților middle-endian (PDP-11), interpretată ca o dată UNIX.
meldate
- O valoare de patru octeți în ordinea octeților middle-endian (PDP-11), interpretată ca o dată în stil UNIX, dar interpretată ca oră locală în loc de oră UTC.
indirect
- Începând de la poziția dată, se
consultă din nou baza de date a magiei. Poziția magiei
indirect
este implicit absolută în fișier, dar se poate specifica/r
pentru a indica faptul că poziția este relativă de la începutul intrării. name
- Definește o instanță magică
“named” (numită) care poate fi apelată de
la o altă intrare magică
use
, ca un apel de subrutină. Pozițiile magice directe ale instanței numite sunt relative la poziția intrării corespondente anterioare, dar pozițiile indirecte sunt relative la începutul fișierului, ca de obicei. Intrările magice numite se potrivesc întotdeauna. use
- Apelează recursiv magia numită începând de
la poziția curentă. Dacă numele referinței
începe cu
^
, atunci endianness-ul magiei este schimbat; dacă magia numităleshort
, de exemplu, aceasta este tratată cabeshort
și viceversa. Acest lucru este util pentru a evita dublarea regulilor pentru diferite endianness-uri. regex
- O potrivire a expresiei regulate în sintaxa POSIX
extinsă a expresiei regulate (precum egrep). Procesarea
expresiilor regulate poate dura un timp exponențial, iar
performanța lor este greu de prevăzut, astfel
încât utilizarea lor este descurajată. Atunci
când sunt utilizate în medii de producție,
performanța lor trebuie verificată cu atenție.
Dimensiunea șirului de caractere de căutat trebuie, de
asemenea, limitată prin specificarea
/<length>
, pentru a evita problemele de performanță în scanarea fișierelor lungi. Specificarea tipului poate fi, de asemenea, urmată opțional de/[c][s][l]
. Fanionul “c” face ca potrivirea să fie insensibilă la majuscule, în timp ce fanionul “s” actualizează pozițial la poziția de început a potrivirii, în loc de cea de la sfârșit. Modificatorul “l”, schimbă limita de lungime în număr de linii în loc de un număr de octeți. Liniile sunt delimitate de delimitatorul de linie nativ al platformelor. Atunci când se specifică un număr de linii, se calculează și un număr implicit de octeți, presupunând că fiecare linie are o lungime de 80 de caractere. Dacă nu este specificat nici un număr de octeți, nici un număr de linii, căutarea este limitată automat la 8Kio.^
și$
se potrivesc cu începutul și sfârșitul liniilor individuale, respectiv, nu cu începutul și sfârșitul fișierului. search
- O căutare literală de șir de caractere
începând de la poziția dată. Se pot
utiliza aceleași fanioane modificatoare ca pentru modelele de
șir de caractere. Expresia de căutare trebuie să
conțină intervalul sub forma
/de număr
care este numărul de poziții la care se va încerca potrivirea, începând de la poziția de pornire. Aceasta este potrivită pentru căutarea în expresii binare mai mari cu poziții variabile, utilizând eludările\
pentru caracterele speciale. Ordinea modificatorului și a numărului nu este relevantă. default
- Acesta este destinat a fi utilizat cu testul x (care
este întotdeauna adevărat) și nu are tip. Se
potrivește atunci când niciun alt test la acel nivel de
continuare nu s-a potrivit înainte. Ștergerea testelor
potrivite pentru un nivel de continuare se poate face folosind testul
clear
. clear
- Acest test este întotdeauna adevărat și
șterge fanionul de potrivire pentru nivelul de continuare
respectiv. Este destinat a fi utilizat împreună cu
testul
default
. der
- Analizează fișierul ca pe un fișier de certificat
DER. Câmpul de testare este utilizat ca un tip DER care trebuie
să fie comparat. Tipurile DER sunt:
eoc
,bool
,int
,bit_str
,octet_str
,null
,obj_id
,obj_desc
,ext
,real
,enum
,embed
,utf8_str
,rel_oid
,time
,res2
,seq
,set
,num_str
,prt_str
,t61_str
,vid_str
,ia5_str
,utc_time
,gen_time
,gr_str
,vis_str
,gen_str
,univ_str
,char_str
,bmp_str
,date
,tod
,datetime
,duration
,oid-iri
,rel-oid-iri
. Aceste tipuri pot fi urmate de o dimensiune numerică opțională, care indică lățimea câmpului în octeți. guid
- Un identificator unic global, analizat și imprimat ca XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. Formatul său este un șir de caractere.
poziția
- Aceasta este o valoare cvadruplă care indică
poziția curentă a fișierului. Aceasta poate fi
utilizată pentru a determina dimensiunea fișierului sau
a tamponului magic. De exemplu, intrările magice:
-0 offset x acest fișier are %lld octeți -0 offset <=100 trebuie să fie mai mare de 100 de octeți \ și este de doar %lld de octeți
octal
- Un șir reprezentând un număr octal.
Pentru compatibilitate cu standardul Unix unic (Single
UNIX Standard), specificatorii de tip
dC
și d1
sunt
echivalenți cu byte
, specificatorii de tip
uC
și u1
sunt
echivalenți cu ubyte
, specificatorii de tip
dS
și d2
sunt
echivalenți cu short
, specificatorii de tip
uS
și u2
sunt
echivalenți cu ushort
, specificatorii de tip
dI
, dL
, și
d4
sunt echivalenți cu
long
, specificatorii de tip
uI
, uL
, și
u4
sunt echivalenți cu
ulong
, specificatorul de tip
d8
este echivalent cu quad
,
specificatorul de tip u8
este echivalent cu
uquad
, iar specificatorul de tip
s
este echivalent cu string
.
În plus, specificatorul de tip dQ
este
echivalent cu quad
, iar specificatorul de tip
uQ
este echivalent cu
uquad
.
Fiecare model magic de nivel superior (a se vedea mai jos pentru o explicație a nivelurilor) este clasificat ca text sau binar în funcție de tipurile utilizate. Tipurile “regex” și “search” sunt clasificate ca teste text, cu excepția cazului în care în model sunt utilizate caractere neimprimabile. Toate celelalte teste sunt clasificate ca binare. Un model de nivel superior este considerat a fi un test text atunci când toate modelele sale sunt modele text; altfel, este considerat a fi un model binar. La potrivirea unui fișier, se încearcă mai întâi modelele binare; dacă nu se găsește nicio potrivire, iar fișierul arată ca un text, se determină codificarea acestuia și se încearcă modelele text.
Tipurile numerice pot fi urmate opțional de
&
și de o valoare numerică, pentru
a specifica faptul că valoarea trebuie să fie evaluată
cu operatorul logic AND cu valoarea numerică înainte de
efectuarea oricărei comparații. Preadăugarea unui
u
la tip indică faptul că
comparațiile ordonate trebuie să fie fără semn.
Valoarea care urmează să fie comparată cu valoarea din
fișier. Dacă tipul este numeric, această valoare este
specificată în format C; dacă este un șir de
caractere, este specificată ca un șir de caractere C cu
eludările obișnuite permise (de exemplu, \n pentru linie
nouă).
Valorile numerice pot fi precedate de un caracter care
indică operația care urmează să fie
efectuată. Acesta poate fi =
, pentru a
specifica faptul că valoarea din fișier trebuie să fie
egală cu valoarea specificată, <
,
pentru a specifica faptul că valoarea din fișier trebuie
să fie mai mică decât valoarea specificată,
>
, pentru a specifica faptul că valoarea
din fișier trebuie să fie mai mare decât valoarea
specificată, &
, pentru a specifica faptul
că valoarea din fișier trebuie să aibă
activați toți biții care sunt activați în
valoarea specificată, ^
, pentru a specifica
faptul că valoarea din fișier trebuie să fi eliminat
oricare dintre biții care sunt activați în valoarea
specificată sau ~
, valoarea
specificată după este negată înainte de testare.
x
, pentru a specifica că orice valoare se va
potrivi. Dacă caracterul este omis, se presupune că este
=
. Operatorii &
,
^
și ~
nu
funcționează cu numere cu virgulă flotantă
și numere de precizie dublă. Operatorul
!
specifică faptul că linia se
potrivește dacă testul
nu
reușește.
Valorile numerice sunt specificate în format C; de exemplu,
13
este zecimal, 013
este
octal, iar 0x13
este hexazecimal.
Operațiile numerice nu sunt efectuate pe tipuri de date, în schimb valoarea numerică este interpretată ca un decalaj.
Pentru valorile șir de caractere, șirul din
fișier trebuie să corespundă șirului specificat.
Operatorii =
, <
și
>
(dar nu și
&
) pot fi aplicați șirurilor de
caractere. Lungimea utilizată pentru potrivire este cea a
argumentului șirului de caractere din fișierul magic. Aceasta
înseamnă că o linie se poate potrivi cu orice
șir nevid (utilizat de obicei pentru a imprima apoi șirul), cu
>\0 (deoarece toate șirurile nevid sunt mai mari
decât șirul gol).
Datele sunt tratate ca valori numerice în reprezentarea internă respectivă.
Testul special x este întotdeauna evaluat
ca fiind „true” (adevărat).
Mesajul care urmează să fie afișat dacă
comparația reușește. Dacă șirul
conține o specificație de format printf(3),
valoarea din fișier (cu orice mascare specificată) este
imprimată folosind mesajul ca șir de format. Dacă
șirul de caractere începe cu “\b”, mesajul
imprimat este restul șirului de caractere, fără niciun
spațiu alb adăugat înainte de acesta: în mod
normal, potrivirile multiple sunt separate de un singur spațiu.
Creatorul și tipul unui APPLE cu 4+4 caractere APPLE pot fi specificate ca:
!:apple CREATYPE
Un tip MIME este dat pe o linie separată, care trebuie să fie următoarea linie fără spațiu liber sau comentariu după linia magică care identifică tipul de fișier, și are următorul format:
!:mime MIMETYPE
adică șirul literal “!:mime” urmat de tipul MIME.
Un punct forte opțional poate fi furnizat pe o linie separată, care se referă la descrierea magică curentă folosind următorul format:
!:strength OPERAND VALOARE
Operandul OPERAND
poate fi:
+
, -
,
*
sau /
, iar
VALOARE
este o constantă între 0
și 255. Această constantă este aplicată folosind
operandul specificat la puterea magică implicită
calculată în prezent.
Unele formate de fișiere conțin informații suplimentare care trebuie afișate împreună cu tipul de fișier sau necesită teste suplimentare pentru a determina adevăratul tip de fișier. Aceste teste suplimentare sunt introduse de unul sau mai multe caractere > care preced pozișia. Numărul de > de pe linie indică nivelul testului; o linie fără > la început este considerată a fi la nivelul 0. Testele sunt aranjate într-o ierarhie arborescentă: dacă testul de pe o linie de la nivelul n reușește, toate testele următoare de la nivelul n+1 sunt efectuate, iar mesajele afișate dacă testele reușesc, până când apare o linie cu nivelul n (sau mai puțin). Pentru fișiere mai complexe, se pot utiliza mesaje goale pentru a obține doar efectul „if/then”, în felul următor:
0 string MZ >0x18 leshort <0x40 MS-DOS executable >0x18 leshort >0x3f extended PC executable (e.g., MS Windows)
Decalajele nu trebuie să fie constante, ci pot fi citite și din fișierul examinat. Dacă primul caracter după ultimul > este un ( atunci șirul de caractere de după paranteză este interpretat ca un decalaj indirect. Aceasta înseamnă că numărul de după paranteză este utilizat ca un decalaj în fișier. Valoarea de la acel decalaj este citită și este utilizată din nou ca decalaj în fișier. Decalajele indirecte sunt de forma: (( x [[.,][bBcCeEfFgGhHiIlmsSqQ]][+-][ y ]).. Valoarea lui x este utilizată ca decalaj în fișier. Un octet, o lungime id3, un număr scurt sau lung este citit la acel decalaj, în funcție de specificatorul de tip [bBcCeEfFgGhHiIlmsSqQ]. Valoarea este tratată ca având semn dacă se specifică “” sau fără semn dacă se specifică “”. Tipurile cu majuscule interpretează numărul ca o valoare big endian, în timp ce versiunile cu litere mici interpretează numărul ca o valoare little endian; tipul m interpretează numărul ca o valoare middle endian (PDP-11). La acest număr se adaugă valoarea y, iar rezultatul este utilizat ca decalaj în fișier. Tipul implicit dacă nu este specificat unul este long. Sunt recunoscute următoarele tipuri:
Tip | Sy Mnemonic | Sy Endian | Sy Dim. |
bcBc | Byte/Char | N/A | 1 |
efg | Double | Little | 8 |
EFG | Double | Big | 8 |
hs | Half/Short | Little | 2 |
HS | Half/Short | Big | 2 |
i | ID3 | Little | 4 |
I | ID3 | Big | 4 |
m | Middle | Middle | 4 |
o | Octal | Textual | Variable |
q | Quad | Little | 8 |
Q | Quad | Big | 8 |
În acest fel se pot examina structuri de lungime variabilă:
# Executabilele MS Windows sunt de asemenea executabile MS-DOS valide 0 string MZ >0x18 leshort <0x40 MZ executable (MS-DOS) # sare peste întregul bloc de mai jos dacă nu este un executabil extins >0x18 leshort >0x3f >>(0x3c.l) string PE\0\0 PE executable (MS-Windows) >>(0x3c.l) string LX\0\0 LX executable (OS/2)
Această strategie de examinare are un dezavantaj: trebuie să vă asigurați că în cele din urmă se imprimă ceva, altfel utilizatorii pot obține o ieșire goală (cum ar fi atunci când nu există nici PE\0\0, nici LE\0\0 în exemplul de mai sus).
Dacă acest decalaj indirect nu poate fi utilizată direct, sunt posibile calcule simple: adăugarea [+-*/%&|^]număr între paranteze permite modificarea valorii citite din fișier înainte ca aceasta să fie utilizată ca decalaj:
# Executabilele MS Windows sunt de asemenea executabile MS-DOS valide 0 string MZ # uneori, valoarea de la 0x18 este mai mică decât 0x40, dar există încă un # executabil extins, adăugat pur și simplu la fișiern >0x18 leshort <0x40 >>(4.s*512) leshort 0x014c COFF executable (MS-DOS, DJGPP) >>(4.s*512) leshort !0x014c MZ executable (MS-DOS)
Uneori nu cunoașteți decalajul exact, deoarece acesta depinde de lungimea sau de poziția (în cazul în care a fost utilizată indirectă anterior) câmpurilor precedente. Puteți specifica un decalaj relativ la sfârșitul ultimului câmp de nivel superior folosind ‘&’ ca prefix al decalajului:
0 string MZ >0x18 leshort >0x3f >>(0x3c.l) string PE\0\0 PE executable (MS-Windows) # imediat după semnătura PE este tipul de CPU >>>&0 leshort 0x14c for Intel 80386 >>>&0 leshort 0x184 for DEC Alpha
Decalajele indirecte și relative pot fi combinate:
0 string MZ >0x18 leshort <0x40 >>(4.s*512) leshort !0x014c MZ executable (MS-DOS) # dacă nu este COFF, merge înapoi cu 512 octeți și adaugă # decalajul luat de la octetul 2/3, care este un alt mod de a # găsi începutul executabilului extins >>>&(2.s-514) string LE LE executable (MS Windows VxD driver)
Sau invers:
0 string MZ >0x18 leshort >0x3f >>(0x3c.l) string LE\0\0 LE executable (MS-Windows) # la decalajul 0x80 (-4, deoarece decalajele relative încep de la # sfârșitul potrivirii nivelului superior) în interiorul antetului LE, # găsim decalajul absolut către zona de cod, unde căutăm o semnătură specifică >>>(&0x7c.l+0x26) string UPX \b, UPX compressed
Sau chiar amândouă!
0 string MZ >0x18 leshort >0x3f >>(0x3c.l) string LE\0\0 LE executable (MS-Windows) # la decalajul 0x58 în interiorul antetului LE, găsim decalajul relativ # către o zonă de date în care căutăm o semnătură specifică >>>&(&0x54.l-3) string UNACE \b, ACE self-extracting archive
Dacă trebuie să aveți de-a face cu perechi decalaj/lungime în fișierul dvs., chiar și a doua valoare dintr-o expresie în paranteze poate fi preluată din fișierul însuși, utilizând un alt set de paranteze. Rețineți că acest decalaj indirect suplimentar este întotdeauna relativ la începutul decalajului indirect principal.
0 string MZ >0x18 leshort >0x3f >>(0x3c.l) string PE\0\0 PE executable (MS-Windows) # caută secțiunea PE numită „.idata”... >>>&0xf4 search/0x140 .idata # ....și merge la sfârșitul acesteia, calculat de la start+lungime; # acestea sunt situate la 14 și 10 octeți după numele secțiunii >>>>(&0xe.l+(-4)) string PK\3\4 \b, ZIP self-extracting archive
Dacă aveți o listă de valori cunoscute la un anumit nivel de continuare și doriți să furnizați un caz implicit de tip comutator:
# curăță această continuare a nivelului de potrivire >18 clear >18 lelong 1 one >18 lelong 2 two >18 default x # imprimă potrivirea implicită >>18 lelong x unmatched 0x%x
CONSULTAȚI ȘI¶
file(1) - comanda care citește acest fișier.
ERORI¶
Formatele long
,
belong
, lelong
,
melong
, short
,
beshort
și leshort
nu
depind de lungimea tipurilor de date C short
și long
de pe platformă, chiar
dacă specificația unică UNIX
implică acest lucru. Cu toate acestea, deoarece OS X Mountain Lion a
trecut de suita de validare a specificației unice
UNIX și furnizează o versiune a
file(1) în care acestea nu depind de dimensiunile
tipurilor de date C și care este construită pentru un mediu pe
64 de biți în care long
are 8
octeți în loc de 4 octeți, probabil că suita de
validare nu testează dacă, de exemplu,
long
se referă la un element cu
aceeași dimensiune ca tipul de date C long
.
Probabil că ar trebui să existe nume de tip
int8
, uint8
,
int16
, uint16
,
int32
, uint32
,
int64
și uint64
,
precum și variante ale acestora cu ordinea octeților
specificată, pentru a fi mai clar că aceste tipuri au
lățimile specificate.
TRADUCERE¶
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net
9 octombrie 2022 | Debian |