namn
fil – bestäm filtyp
Synopsis
filfil …
file-C
file
beskrivning
den här manualsidan dokumenterar version 5.04 av kommandot file.
fil testar varje argument i ett försök att klassificera det. Det finns tre uppsättningar av tester, utförs i denna ordning: filsystem tester, magiska tester, andlanguage tester. Det första testet som lyckas gör att filtypen skrivs ut.
den typ som skrivs ut innehåller vanligtvis ett av orden text (filen innehåller bara utskriftstecken och några vanliga kontrolltecken och är sannolikt säkert att läsa på en ASCII-terminal), körbar (filen innehåller resultatet av att kompilera ett program i en form som är förståelig för någon UNIXkernel eller annan), eller data som betyder något annat (data är vanligtvis ’binär’ eller icke-utskrivbar). Undantag är välkända filformat (kärnfiler, tararkiv) som är kända för att innehålla binära data. När du ändrar magiska filer eller själva programmet, se till att bevara dessa nyckelord. Användare är beroende av att veta att alla läsbara filer i en katalog har ordet ’text’ tryckt. Gör inte som Berkeley gjorde och ändra ’skalkommandon text’ till ’skalskript’.
filsystemtesterna baseras på att undersöka avkastningen från ett stat(2) systemanrop. Programmet kontrollerar om filen är tom, eller om det är någon form avspeciell fil. Alla kända filtyper som är lämpliga för det system du kör på (uttag, symboliska länkar eller namngivna rör (FIFOs) på de system som implementerar dem) intuiteras om de definieras i systemhuvudfilen
de magiska testerna används för att söka efter filer med data i synnerhet fasta format. Det kanoniska exemplet på detta är ett binärt körbart (kompilerat program)en.out-fil, vars format definieras i #include <a.out.h>
och eventuellt #inkludera <exec.h>
i standarden inkluderar katalog. Dessa filer har ett’ magiskt nummer ’ lagras på en viss plats nära början av filen som berättar UNIX operatingsystem att filen är en binär körbar, och vilken av flera typer därav. Begreppet ’magi’ har tillämpats i förlängningen till datafiler. Varje filmed någon invariant identifierare vid en liten fast förskjutning i filen kan vanligtvis beskrivas på detta sätt. Informationen som identifierar dessa filer läses frånden sammanställda magiska filen/usr/share/misc / magic.MGC, eller filerna i katalogen /usr/share/misc/magic om den kompilerade filen inte existerar. Dessutom, om $hem/.magisk.mgc eller $hem/.magic existerar, det kommer att användas i stället för systemet magiska filer. Om/etc / magic existerar, detkommer att användas tillsammans med andra magiska filer.
om en fil inte matchar någon av posterna i den magiska filen undersöks den för att se om det verkar vara en textfil. ASCII, ISO-8859-x, icke-ISO 8-bitextended-ASCII teckenuppsättningar (som de som används på Macintosh och IBM PC-system), UTF-8-kodad Unicode, UTF-16-kodad Unicode och EBCDIC teckenuppsättningarkan särskiljas genom de olika intervall och sekvenser av byte som utgör utskrivbar text i varje uppsättning. Om en fil passerar någon av dessa tester, desskaraktärsuppsättning rapporteras. ASCII -, ISO-8859-x -, UTF-8-Och extended-ASCII-filer identifieras som ’text’ eftersom de mest kan läsas på nästan anyterminal; UTF-16 och EBCDIC är bara ’teckendata’ eftersom, medan de innehåller text, Det är text som kommer att kräva översättning innan den kan läsas. Dessutom kommer file att försöka bestämma andra egenskaper hos texttypsfiler. Om raderna i en fil avslutas av CR, CRLF eller NEL, istället för Unix-standard LF, kommer detta att rapporteras. Filer som innehåller inbäddade escape sekvenser eller overstriking kommer också att identifieras.
När filen har bestämt teckenuppsättningen som används i en texttypsfil, kommer den att försöka bestämma på vilket språk filen skrivs. Språktesterna letar efter särskilda strängar (jfr. # inkludera < namn.h>
) som kan visas var som helst i de första blocken i en fil. Till exempel anger nyckelordet .br att filen troligen är en troff(1) inmatningsfil,precis som nyckelordet struct indikerar ett C-program. Dessa tester är mindre tillförlitliga än de två föregående grupperna, så de utförs senast. Languagetest-rutinerna testar också för vissa miscellany(t.ex. tar (1) arkiv).
alla filer som inte kan identifieras som skrivna i någon av de teckenuppsättningar som anges ovan sägs helt enkelt vara ’data’.
alternativ
-b, --brief
lägg inte till filnamn för att mata ut linjer (kort läge).
-C, –compile
Skriv en Magi.MGC-utdatafil som innehåller en pre-tolkad version av den magiska filen eller katalogen.
-c, –checking-Print
orsaka en kontrollutskrift av den tolkade formen av den magiska filen. Detta används vanligtvis i samband med-M-flaggan för att felsöka en ny magisk fil innan du installerar den.
-e, –exclude testname
Uteslut testet som heter i testname från listan över tester som gjorts för att bestämma filtypen. Giltiga testnamn är:
apptype
EMX – applikationstyp (endast på EMX).
text ’ olika typer av textfiler (detta test kommer att försöka gissa textkodningen, oavsett inställningen för alternativet ’kodning’).
kodning
olika textkodningar för mjuka magiska tester.
tokens Letar efter kända tokens i textfiler.
cdf ’ skriver ut detaljer om sammansatta dokumentfiler.
komprimera
söker efter, och ser inuti, komprimerade filer.
elf ’ skriver ut ELF – Fildetaljer.
soft ’ konsulterar magiska filer.
tar ’ undersöker tar-filer.
-f, –separator separator
Använd den angivna strängen som separator mellan filnamnet och det returnerade filresultatet. Standardvärdet är ’:’.
-f, –files-from namefile
Läs namnen på filerna som ska granskas från namefile (en per rad) före argumentlistan. Antingen namefile eller minst ett filenameargument måste vara närvarande; för att testa standardinmatningen, Använd ’ – ’ som ett filnamnargument.
-h, –no-dereference
alternativet gör att symboliska länkar inte följs (på system som stöder symboliska länkar). Detta är standard om miljövariabeln POSIXLY_CORRECT inte ärdefinierad.
-i, –mime
orsakar filkommandot att mata ut MIME-typsträngar snarare än de mer traditionella läsbara. Således kan det säga ’text / plain; charset = us-ascii ’snarare än’ASCII-text’. För att det här alternativet ska fungera ändrar file hur det hanterar filer som känns igen av kommandot själv (till exempel många av textfiltyperna, katalogerna etc) och använder sig av en alternativ ’magisk’ fil. (Se avsnittet Filer nedan).
–mime-typ, –mime-kodning
gilla-i, men skriv bara ut de angivna elementen.
-l, –dereference
alternativet gör att symboliska länkar följs, som alternativet med samma namn i ls (1) (på system som stöder symboliska länkar). Detta är standard om miljövariabel POSIXLY_CORRECT är definierad.
-m, –magic-file magicfiles
ange en alternativ lista över filer och kataloger som innehåller magic. Detta kan vara ett enda objekt eller en kolonseparerad lista. Om en kompilerad magisk fil hittaslängs en fil eller katalog, kommer den att användas istället.
-N, –no-pad
inte pad filnamn så att de justera i utdata.
-n, –no-buffer
tvinga stdout att spolas efter att ha kontrollerat varje fil. Detta är bara användbart om du kontrollerar en lista med filer. Den är avsedd att användas av program som vill filetypeoutput från ett rör.
-p, –preserve-date
på system som stöder utime(2) eller utimes (2), försök att bevara åtkomsttiden för analyserade filer, för att låtsas att filen aldrig läser dem.
-r, –raw
översätt inte utskrivbara tecken till \ooo. Normalt översätter filen otryckbara tecken till deras oktala representation.
-s, –special-files
normalt försöker fil bara läsa och bestämma vilken typ av argumentfiler som stat(2) rapporter är vanliga filer. Detta förhindrar problem, eftersomläsning av speciella filer kan ha speciella konsekvenser. Att ange alternativet – S gör att filen också läser argumentfiler som är block ellerkaraktär specialfiler. Detta är användbart för att bestämma filsystemtyperna för data i raw-diskpartitioner, som är block specialfiler. Detta alternativ orsakar också att filen ignorerar filstorleken som rapporterats av stat(2) eftersom det på vissa system rapporterar en nollstorlek för raw-diskpartitioner.
-v, –version
Skriv ut versionen av programmet och avsluta.
-z, –uncompress
försök att titta inuti komprimerade filer.
–help
Skriv ut ett hjälpmeddelande och avsluta.
filer
/usr/share/misc/magic.mgc
standard sammanställd lista över Magi.
/usr/share/misc/magic’ katalog som innehåller standard magiska filer.
miljö
miljövariabeln MAGIC kan användas för att ställa in standard magiska filnamn. Om den variabeln är inställd försöker filen inte öppna$HOME/.magisk. filen lägger till’.mgc ’ till värdet av denna variabel i förekommande fall. Miljövariabeln POSIXLY_CORRECT kontroller (på system somstöd symboliska länkar), Om filen kommer att försöka följa symboliska länkar eller inte. Om det är inställt följer filen symlink, annars gör det inte. Detta styrs också av alternativen-L och-h.
Se även
magic(5), strings(1), od(1), hexdump(1,) file(1posix)
Standards Conformance
detta program tros överstiga System V Interface Definition of FILE(CMD), så nära som man kan bestämma från det vaga språket som finns däri.Dess beteende är mestadels kompatibelt med System V-programmet med samma namn. Denna version vet dock mer magi, så det kommer att producera olika (om än mernoggrann) produktion i många fall.
den enda signifikanta skillnaden mellan denna version och System V är att den här versionen behandlar alla vita utrymmen som en avgränsare, så att mellanslag i mönstersträngar måste rymmas. Till exempel,
>10 string language impress (imPRESS data)
I en befintlig magisk fil måste ändras till
>10 string language\ impress (imPRESS data)
dessutom, i den här versionen, om en mönstersträng innehåller ett backslash, måste det undkomma. Till exempel måste
0 string \begindata Andrew Toolkit document
I en befintlig magisk fil ändras till
0 string \\begindata Andrew Toolkit document
SunOS releases 3.2 och senare från Sun Microsystems inkluderar ett filkommando som härrör från System V one, men med vissa tillägg. Min version skiljer sig från Suns enda på mindre sätt. Det inkluderar förlängningen av”& ’operator, som till exempel används som
>16 long&0x7fffffff >0 not stripped
Magic Directory
de magiska filposterna har samlats in från olika källor, främst USENET, och bidragit av olika författare. Christos Zoulas (adress nedan) kommersamla in ytterligare eller korrigerade magiska filposter. En konsolidering av magiska filposter kommer att distribueras med jämna mellanrum.
ordningen på poster i den magiska filen är signifikant. Beroende på vilket system du använder kan ordningen som de sätts ihop vara felaktig. Om ditt gamla filkommando använder en magisk fil, behåll den gamla magiska filen för jämförelseändamål (Byt namn på den till /usr/share/misc/magic.orig).
exempel
$ file file.c file /dev/{wd0a,hda}file.c: C program textfile: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
dynamiskt länkad (använder delade libs), strippad
/ 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 sektor
historia
det har funnits ett filkommando i varje UNIX sedan åtminstone Research Version 4 (man page daterad November 1973). System V-versionen introducerade enbetydande stor förändring: den externa listan över magiska typer. Detta saktade ner programmet något men gjorde det mycket mer flexibelt.
detta program, baserat på System V-versionen, skrevs av Ian Darwin <[email protected]> utan att titta på någon annans källkod.
John Gilmore reviderade koden utförligt, vilket gör det bättre än den första versionen. Geoff Collyer hittade flera brister och gav några magiska filentries. Bidrag från operatören’ & ’ av Rob McMahon, [email protected], 1989.
Guy Harris, [email protected], gjorde många förändringar från 1993 till idag.
primär utveckling och underhåll från 1990 till nutid av Christos Zoulas ([email protected]).
ändrad av Chris Lowth, [email protected], 2000: Hantera-i-alternativet för att mata ut MIME-typsträngar, med hjälp av en alternativ magisk fil och intern logik.
ändrad av Eric Fischer ([email protected]), juli 2000, för att identifiera teckenkoder och försöka identifiera språken i icke-ASCII-filer.
ändrad av Reuben Thomas ([email protected]), 2007 till 2008, för att förbättra MIME-stöd och slå samman MIME och icke-MIME Magi, stöd kataloger samt filer ofmagic, tillämpa många buggfixar och förbättra byggsystemet.
listan över bidragsgivare till’ magic ’ – katalogen (magiska filer) är för lång för att inkludera här. Du vet vem du är; tack. Många bidragsgivare är listadei källfilerna.
Rättsligt meddelande
Copyright Bisexual Ian F. Darwin, Toronto, Kanada, 1986-1999. Omfattas av standarden Berkeley Software Distribution copyright; se filen LEGAL.Meddelande i källdistribution.
filerna tar.h och is_tar.c skrevs av John Gilmore från hans public domain tar (1) program, och omfattas inte av ovanstående licens.
buggar
det måste finnas ett bättre sätt att automatisera byggandet av den magiska filen från alla glop i Magdir. Vad är det?
fil använder flera algoritmer som gynnar hastighet över noggrannhet, så det kan vilseledas om innehållet i textfiler.
stödet för textfiler (främst för programmeringsspråk) är förenklat, ineffektivt och kräver omkompilering för att uppdateras.
listan med nyckelord i ascmagic hör förmodligen till den magiska filen. Detta kan göras genom att använda något nyckelord som ’*’ för offsetvärdet.
klaga på konflikter i de magiska filposterna. Gör en regel att de magiska posterna sorterar baserat på filförskjutning snarare än position i den magiska filen?
den här manualsidan, och särskilt det här avsnittet, är för lång.
returkod
fil returnerar 0 vid framgång och icke-noll vid fel.
om filen som heter av filen operand inte existerar, inte kan läsas eller typen av filen som heter av filen operand inte kan bestämmas, anses detta inte vara ett fel som påverkar utgångsstatusen.
tillgänglighet
Du kan få den ursprungliga författarens senaste versionen av anonym FTP på ftp.astron.com i katalogen / pub/file / file-X. YZ.tjära.gz
BSD 9 oktober 2008 BSD