FILE(1) | General Commands Manual | FILE(1) |
file
— bepaal
bestand soort
file
[-bcdEhiklLNnprsSvzZ0
]
[--apple
] [--exclude-quiet
]
[--extension
]
[--mime-encoding
]
[--mime-type
]
[-e
testname]
[-F
separator]
[-f
namefile]
[-m
magicfiles]
[-P
name=value] file
... file
-C
[-m
magicfiles]
file
[--help
]
Deze handleiding beschrijft versie 5.44 van het
file
commando.
file
test elk argument in een
poging het te classificeren. Er zijn drie testen, uitgevoerd in deze
volgorde: bestandssysteem testen, magische getal testen en taal testen. De
eerste test die
slaagt zorgt dat de bestandssoort wordt getoond.
De soort die afgedrukt wordt zal gewoonlijk
één van de woorden
text bevatten (het
bestand bevat alleen ASCII
karakters en is
waarschijnlijk veilig om te lezen op een ASCII
terminal),
executable
(het bestand bevat het resultaat van het compileren van een programma in een
vorm die begrijpelijk is voor een of andere UNIX kernel), of
data
betekenend al het andere (data is gewoonlijk “binair” of
niet-afdrukbaar). Uitzonderingen zijn algemeen bekende bestandsvormen (core
bestanden, tar archieven) waarvan bekend is dat ze binaire data bevatten.
Bij toevoegen van lokale definities aan
/etc/magic,
behoudt deze
sleutelwoorden. Mensen vertrouwen op het feit dat bij alle leesbare
bestanden in een map het woord “text” afgedrukt wordt. Doe
niet zoals Berkeley deed - veranderen van “shell commands
text” in “shell script”.
De bestandssysteem tests zijn gebaseerd op het onderzoeken van de
eindwaarde van een stat(2) systeem aanroep. Het programma
test om te zien of een bestand leeg is, of dat het een soort speciaal
bestand is. Elke bekende bestand soort die toepasselijk is op het systeem
waar u op draait (sockets, symbolische koppelingen, benoemde pijpen (FIFOs)
op systemen die dat implementeren) worden opgemerkt als ze zijn gedifinieerd
in het systeem header bestand
<sys/stat.h>
.
De magische getallen testen worden gebruikt om te testen op
bestanden met gegevens in bepaalde vaste vormen. Het meest in het oog
springende voorbeeld hiervan is een binair uitvoerbaar (gecompileerd
programma) a.out
bestand, wiens vorm gedefinieerd is
in <elf.h>
,
<a.out.h>
en mogelijk
<exec.h>
in de standaard
`include' map. Deze bestanden hebben een “magisch getal”
opgeslagen op een vaste plaats vlak na het begin van het bestand, dat het
UNIX besturingssysteem verteld dat het bestand een binair uitvoerbare is en
welke van verschillende soorten daarvan. Het “magisch getal”
concept wordt ook als uitbreiding hierop toegepast op data bestanden. Elk
bestand met een onveranderlijke identificatie op korte vaste afstand van het
begin van het bestand kan gewoonlijk op deze manier beschreven worden. De
informatie die deze bestanden identificeren wordt gelezen van /etc/magic en
het gecompileerde magisch bestand
/usr/share/file/misc/magic.mgc, of van de bestanden
in de map /usr/share/file/misc/magic indien het
gecompileerde bestand niet bestaat. Nog toegevoegd mag worden dat als
$HOME/.magic.mgc of
$HOME/.magic bestaat, dan wordt dat gebruikt boven
de magische bestanden van het systeem.
Als een argument een ASCII bestand blijkt te zijn dan probeert
file
om de taal te raden. De taal tests zoeken naar
bepaalde strings (cf names.h) die ergens in de eerste paar blokken van het
bestand kunnen voorkomen. Bijvoorbeeld het sleutelwoord “.br”
betekend hoogstwaarschijnlijk dat het bestand een “troff” (1)
invoer bestand is, net zoals het sleutelwoord “struct” een C
programma aangeeft. Deze tests zijn minder betrouwbaar dan de eerdere twee
groepen, dus worden ze als laatste uitgevoerd. De taal routines testen ook
wat andere dingen (zoals “tar” (1) archieven) en bepalen of
een onbekend bestand `ascii text' of `data' genoemd moet worden).
Zodra file
de teken set in een
tekst-bestand heeft bepaald , zal het proberen te bepalen in welke taal het
bestand is geschreven. De taal testen zoeken bepaalde teksten (zie
<names.h>
) die overal kunnen
voorkomen in de eerste blokken van een bestand. Bijvoorbeeld, het trefwoord,
.br geeft aan dat het
bestand hoogstwaarschijnlijk een troff(1) invoer bestand
is, net als het trefwoord
struct
aangeeft dat het een C programma is. Deze testen zijn minder betrouwbaar dan
de voorgaande twee groepen, daarom worden zij als laatste toegepast. De taal
test routines testen ook verschillende (zoals tar(1)
archieven, JSON files).
Elk bestand dat niet geïdentificeerd kan worden als geschreven in een van de bovengenoemde teken sets, is eenvoudig “data”.
--apple
file
commando het bestandstype en de
creator code, zoals gebruikt door oudere MacOS versies toont. De code
bestaat uit acht letters, de eerste beschrijft het bestandstype, de
laatste de creator. Deze optie werkt alleen netjes voor bestandstypen die
door de Apple-stijl uitvoer bepaald zijn.-b
,
--brief
-C
,
--compile
-c
,
--checking-printout
-m
optie om een nieuw magisch bestand te debuggen
voordat het geïnstalleerd wordt.-d
-E
-e
,
--exclude
testnaamEMX
applicatie type (alleen op EMX).--exclude-quiet
--exclude
maar negeer testen waarvan
file
geen kennis heeft. Dit is bedoeld ten behoeve
van compatibiliteit met oudere versies van
file
.--uitbreiding
-F
,
--separator
separator-f
,
--files-from
NAMENBESTAND-h
,
--no-dereference
POSIXLY_CORRECT
niet is
gezet.-i
,
--mime
file
commando mime type
teksten stuurt in plaats van de traditionele leesbare. Dus je mag
schrijven ‘text/plain; charset=us-ascii’ in plaats van
“ASCII text”.--mime-type
,
--mime-encoding
-i
, maar toon alleen de opgegeven
elementen.-k
,
--keep-going
-r
optie, ale je een nieuwe regel wenst). Het
magisch patroon met de grootste sterkte (zie de -l
optie) komt eerst.-l
,
--list
-k
optie).-L
,
--dereference
POSIXLY_CORRECT
werd
gezet.-m
,
--magic-file
LIJST-N
,
--no-pad
-n
,
--no-buffer
-p
,
--preserve-date
file
ze nooit heeft
gelezen.-P
,
--parameter
naam=waardeNaam | Standaard | Verklaring |
bytes |
1048576 | maximum aantal bytes om te lezen van een bestand |
elf_notes |
256 | max ELF notes verwerkt |
elf_phnum |
2048 | max ELF programma secties verwerkt |
elf_shnum |
32768 | max ELF secties verwerkt |
coderen |
65536 | maximum aantal bytes om te lezen voor de de evaluatie van het coderen |
indir |
50 | recursie limiet voor het indirecte magisch getal |
indir |
50 | gebruiksteller voor naam/gebruik magisch getal |
regex |
8192 | lengte limiet voor zoeken van regex |
-r
,
--raw
file
niet-afdrukbare tekens in hun octale
representatie tonen.-s
,
--special-files
file
alleen bestanden te lezen
om het soort te bepalen voor bestanden die stat(2) als
gewone bestanden rapporteert. Dit voorkomt problemen omdat lezen van
speciale bestanden vreemde consequenties kan hebben. Het opgeven van de
-s
optie zorgt dat file
ook de argumenten leest die blok- of karakter-speciale bestanden zijn. Dit
is zinvol om het bestand systeem type van de gegevens in de schijf
partities te bepalen, die blok-speciale bestanden zijn. Deze optie zorgt
dat file
de bestandsgrootte zoals gegeven door
stat(2) negeert omdat dat op sommige systemen nul
rapporteert voor ruwe schijf partities.-S
,
--no-sandbox
-S
vlag sandboxing
uitschakelen die standaard is ingeschakeld. Deze optie is nodig als
file
externe uitpak programma´s nodig
heeft, m.a.w. wanneer de -z
optie werd opgegeven
en de ingebouwde uitpakkers niet beschikbaar zijn. Op systemen waar
sandboxing niet beschikbaar is, heeft deze optie geen effect.
Note: Deze Debian versie van file was gebouwd zonder seccomp ondersteuning, daarom heeft deze optie geen effect.
-v
,
--version
-z
,
--uncompress
-Z
,
--uncompress-noreport
-0
,
--print0
Als deze optie meerdere malen herhaald wordt, dan toont
file
alleen de bestandsnaam gevolgd door een
nul, gevolgd door een beschrijving (of FOUT: tekst) gevolgd door een
tweede nul voor elk item.
--help
De omgevingsvariabele MAGIC
kan gebruikt
worden om het standaard magische getallen bestand te zetten. Als deze
variabele is gezet dan zal file
niet proberen om
$HOME/.magic te openen. file
voegt “.mgc” toe aan de variabele
indien toepasbaar. De omgevingsvariabele
POSIXLY_CORRECT
bepaald (op systemen die symbolische
koppelingen ondersteunen), of file
probeert om
symbolische koppelingen te volgen of niet. Als file
is gezet dan worden symbolische koppelingen gevolgd, anders niet. Dit wordt
mede bepaald door de -L
en
-h
opties.
file
stopt met 0
als de operatie succesvol was of >0
als een fout
is opgetreden. De volgende codes zorgen voor diagnostische berichten, maar
hebben geen invloed op de stop code (zoals POSIX vereist), behalve als
-E
werd opgegeven:
$ 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
Men denkt dat dit programma de System V Interface Definitie van FILE(CMD) overstijgt, voor zover dat te bepalen is uit de vage taal daarin. Zijn gedrag is voor het grootste gedeelte overeenkomstig met het System V programma met dezelfde naam. Deze versie kent echter meer magie, dus zal het in veel gevallen vaak andere (hoewel meer precieze) uitvoer produceren .
Het enige echte verschil tussen deze versie en System V is dat deze versie witruimte als een begrenzer behandeld, zodat spaties in patroon-strings geëscape't moeten worden. Bijvoorbeeld:
>10 string language impress (imPRESS data)
in een bestaand magisch bestand zou veranderd moeten worden in
>10 string language\ impress (imPRESS data)
Als toevoeging, in deze versie, als een patroon tekst een backslash bevat, dan moet deze ge-escaped worden. Bijvoorbeeld
0 string \begindata Andrew Toolkit document
in een bestaand magisch bestand zou veranderd moeten worden in
0 string \\begindata Andrew Toolkit document
SunOS uitgave 3.2 en later van Sun Microsystems heeft een
file
opdracht afgeleid van die van System V, maar
met enige uitbreidingen. Mijn versie verschilt weinig van die van Sun. Het
heeft de ‘&’ operator uitbreiding, gebruikt als in
bijvoorbeeld:
>16 long&0x7fffffff >0 not stripped
Op systemen waar libseccomp
(https://github.com/seccomp/libseccomp) beschikbaar
is, zal file
de systeem aanroepen beperken tot
alleen die, die nodig zijn voor correcte werking van het programma. Deze
beperking heeft geen veiligheidsvoordeel wanneer
file
gevraagd wordt om invoer bestanden uit te
pakken met een extern programma met de -z
optie. Om
het uitvoeren van een extern uitpak programma mogelijk te maken, moet het
sandboxen uitschakeld worden met de -S
vlag.
De magische bestand-items zijn verzameld van verschillende bronnen, vooral USENET, en aangereikt door verschillende auteurs. Christos Zoulas (adres onder) ontvangt aanvullingen of bijgewerkte magische bestand-items. Een consolidatie van magische bestand-items zal periodiek verspreidt worden.
De volgorde van inzendingen in de magic file is bepalend. Afhankelijk van welk systeem je gebruikt kan de aangebrachte volgorde foutief zijn.
Er was een file
opdracht in elke
UNIX
sinds tenminste "Research Version 4"
(handleiding dateert van november 1973). De System V versie introduceerde
één belangrijke grote verandering: de externe lijst met
magische getallen soorten. Dit maakte het programma iets langzamer maar
maakte het veel flexibeler.
Dit op System V versie gebaseerde programma werd geschreven door Ian Darwin ⟨ian@darwinsys.com⟩ zonder naar iemands anders broncode te kijken.
John Gilmore bewerkte de code uitgebreid en maakte het beter dan de eerste versie. Geoff Collyer vond verschillende onhandigheden en leverde enkele magische bestand-ingangen. Het programma heeft zich sindsdien continue ontwikkeld. Veranderd door Rob McMahon, ⟨cudcv@warwick.ac.uk⟩, 1989.
Aangepast door Guy Harris, ⟨guy@netapp.com⟩, 1993.
Veranderingen door Ian Darwin en verschillende auteurs waaronder Christos Zoulas ⟨christos@astron.com⟩, 1990-1999.
Gewijzigd door Chris Lowth ⟨chris@lowth.com⟩, 2000:
zorg dat de -i
optie mime type teksten maakt,
gebruik een alternatief magisch bestand en interne logica.
Gewijzigd door Eric Fischer ⟨enf@pobox.com⟩, juli, 2000, identificeert teken codes en een poging om talen van niet-ASCII bestanden te identificeren.
Gewijzigd door Reuben Thomas ⟨rrt@sc3d.org⟩, 2007-2011, om MIME support te verbeteren, voeg MIME en niet-MIME magie samen, ondersteuning mappen, als ook magische bestanden, los bugs op, verbeter veel magic, verbeter het bouw systeem, verbeter de documentatie, en herschrijf de Python bindings in pure Python.
De lijst met bijdragers aan de ‘magic’ map (magische bestanden) is te lang om hier op te nemen. Je weet wie je bent, dank je wel! Veel namen van bijdragers zijn opgenomen in de bron bestanden.
Copyright (c) Ian F. Darwin, Toronto, Canada, 1986-1999. Gedekt door de het standaard Berkeley Software Distribution copyright; zie het bestand COPYING in de bron distributie.
De bestanden tar.h en is_tar.c zijn geschreven door John Gildmore voor zijn public-domain tar(1) programma, en zijn geen onderdeel van bovenstaande licentie.
Rapporteer bugs en stuur patches naar de bugtracker op https://bugs.astron.com/ of de mailing lijst op ⟨file@astron.com⟩ (bezoek https://mailman.astron.com/mailman/listinfo/file eerst om je te abonneren).
Verbeter de uitvoer zodat de testen voor MIME en APPLE vlaggen onnodig zijn op veel plekken, en de uitvoer alleen op één plek wordt gedaan. Nu is een ontwerp nodig. Suggestie: plaats mogelijke uitvoer in een lijst, selecteer vervolgens de laatst geplaatste (beter, je hoopt) waarde aan het einde, of gebruik een standaard indien de lijst leeg is. Dit zou de evaluatie niet moeten vertragen.
De afhandeling van MAGIC_CONTINUE
en
afdrukken van \012- tussen items is onhandig en gecompliceerd;
herstructureer en centraliseer.
Enkele van de codering logica is vast opgenomen in encoding.c en kan worden verplaatst naar de magische bestanden indien we een !:charset annotatie hadden.
Ga door met oplossen van alle magische bugs. Zie Debian BTS voor een goede bron.
Bewaar willekeurige lange teksten, bijvoorbeeld voor %s patronen, opdat die getoond kunnen worden. Lost Debian bug 271672 op. Dit kan gedaan door het toekennen van teksten in een tekst-vat, en het bewaren van het tekst-vat aan het einde van het magisch bestand en het omzetten van alle tekst wijzers naar de relatieve of van het tekst-vat.
Voeg syntaxis toe voor relatieve plaatse na het huidige niveau (Debian bug #466037).
Activeer bestand -ki, m.a.w. geef meerdere MIMI typen.
Voeg een zip bibliotheek toe zodat we kunnen kijken in Office2007 documenten om meer details van hun inhoud te kunnen zien.
Voeg een optie toe om URL´s te tonen van de bron van de bestands omschrijvingen.
Het combinatie script zoekt en voegt een manier toe om executable namen naar MIME types te laten wijzen (b.v. maak een magisch getal voor !:mime dat er voor zorgt dat de resulterende tekst kan worden gezocht in een tabel). Dit voorkomt dat we hetzelfde magisch getal meerdere malen moeten toevoegen voor elke nieuwe hash-bang vertaler.
Als een bestand omschrijving bestaat, dan slaan we over en passen de buffer aan in plaats van het onhandige buffer beheer dat we nu toepassen.
Gebruik “name” om “use” om te controleren op consistentie bij het compileren (duplicaat “name”, “use” wijzend naar ongedefinieerd “name” ). Maak “name” / “use” efficiënter door een gesorteerde lijst van namen te bewaren. Speciaal-geval ^ om endianness om te draaien in de ontleder zodat het niet ge-escaped moet worden, documenteer dit.
Zodra de intern in het bestand opgegeven positie de buffer grootte
overschrijdt ( HOWMANY
variabele in file.h), zoeken
we niet tot die positie, maar stoppen we. Het zou beter zijn als buffer
beheer pas werd gedaan zodra de bestand indicator beschikbaar was om te
zoeken in het bestand. We moeten voorzichtig zijn want we moeten rekening
houden met prestatie en dus veiligheid, omdat door herhaald zoeken zaken
langzaam kunnen worden.
Er is nu ondersteuning voor het in stand houden van aparte buffers en voor het hebben van afstand van het einde van het bestand. Hoewel het interne buffer beheer nog een verbetering behoeft.
U kunt de laatste versie van de originele auteur verkrijgen via anonymous FTP op ftp.astron.com in de map /pub/file/file-X.YZ.tar.gz.
De Nederlandse vertaling van deze handleiding is geschreven door Jos Boersema <joshb@xs4all.nl>, Mario Blättermann <mario.blaettermann@gmail.com> en Luc Castermans <luc.castermans@gmail.com>
Deze vertaling is vrije documentatie; lees de GNU General Public License Version 3 of later over de Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID.
Indien U fouten in de vertaling van deze handleiding zou vinden, stuur een e-mail naar debian-l10n-dutch@lists.debian.org
26 oktober 2022 | Debian |