Maybaygiare.org

Blog Network

file(1) – Pagina di manuale di Linux

Nome

file – determinare il tipo di file

Sinossi

file file …

file-C

file

Descrizione

Questa pagina di manuale documenta la versione 5.04 del comando file.

il file verifica ogni argomento nel tentativo di classificarlo. Esistono tre serie di test, eseguiti in questo ordine: test del filesystem, test magici e test di lingua. Il primo test che ha esito positivo causa la stampa del tipo di file.

Il tipo stampato di solito contengono una delle parole del testo (il file contiene solo caratteri di stampa e di alcuni comuni caratteri di controllo e isprobably sicuro di leggere su un terminale ASCII), eseguibile (il file che contiene il risultato della compilazione di un programma in una forma comprensibile per alcuni UNIXkernel o altro), o i dati di un significato altro (i dati sono di solito ‘binario’ o non stampabile). Le eccezioni sono formati di file ben noti (file core, tararchives) che sono noti per contenere dati binari. Quando si modificano i file magici o il programma stesso, assicurarsi di conservare queste parole chiave. Gli utenti dipendono onknowing che tutti i file leggibili in una directory hanno la parola ‘testo’ stampato. Non fare come ha fatto Berkeley e cambiare ‘shell commands text’ in ‘shell script’.

I test del filesystem si basano sull’esame del ritorno da una chiamata di sistema stat(2). Il programma controlla se il file è vuoto o se si tratta di una sorta di file speciale. Tutti i tipi di file noti appropriati al sistema su cui si sta eseguendo (socket, collegamenti simbolici o named pipe (FIFOS) su quei sistemi che li implementano) vengono intuiti se sono definiti nel file di intestazione del sistema

I test magici vengono utilizzati per verificare la presenza di file con dati in particolari formati fissi. L’esempio canonico di questo è un eseguibile binario (programma compilato) un file.out, il cui formato è definito in #include <a.out.h >
ed eventualmente #include < exec.h >
nella directory include standard. Questi file hanno un’ numero magico ‘ memorizzato in un luogo particolare vicino all’inizio del file che dice al sistema operativo UNIX che il file è un eseguibile binario e quale di diversi tipi di esso. Il concetto di “magia” è stato applicato per estensione ai file di dati. Qualsiasi filewith qualche identificatore invariante ad un piccolo offset fisso nel file di solito può essere descritto in questo modo. Le informazioni che identificano questi file vengono lette dail file magico compilato / usr / share/misc / magic.mgc, o i file nella directory / usr / share/misc / magic se il file compilato non esiste. Inaddition, se HOME CASA/.magia.mgc o HOME CASA/.magic esiste, verrà utilizzato in preferenza ai file di sistema magic. Se /etc/magic esiste, sarà usato insieme ad altri file magici.

Se un file non corrisponde a nessuna delle voci nel file magic, viene esaminato per vedere se sembra essere un file di testo. ASCII, ISO-8859-x, non ISO 8-bitextended-ASCII set di caratteri (come quelli utilizzati su sistemi PC Macintosh e IBM), Unicode codificato UTF-8, Unicode codificato UTF-16 e set di caratteri EBCDICPUÒ essere distinto dai diversi intervalli e sequenze di byte che costituiscono il testo stampabile in ogni set. Se un file supera uno di questi test, viene segnalato il suo set di caratteri. I file ASCII, ISO-8859-x, UTF-8 e extended-ASCII sono identificati come “testo” perché saranno per lo più leggibili su quasi tutti i terminali; UTF-16 e EBCDIC sono solo “dati di carattere” perché, mentre contengono testo, è il testo che richiederà la traduzione prima che possa essere letto. Inoltre, file tenterà di determinare altre caratteristiche dei file di tipo testo. Se le righe di un file sono terminate da CR, CRLF o NEL, invece dello standard Unix LF, questo verrà segnalato. Verranno identificati anche i file che contengono sequenze di escape incorporate o overstriking.

Una volta che il file ha determinato il set di caratteri utilizzato in un file di tipo di testo, tenterà di determinare in quale lingua il file è scritto. I languagetest cercano stringhe particolari (cfr. # include<nomi.h>
) che può apparire ovunque nei primi blocchi di un file. Ad esempio,la parola chiave .br indica che il file è molto probabilmente un file di input troff(1), proprio come la parola chiave struct indica un programma C. Questi test sono meno affidabili rispetto ai due gruppi precedenti, quindi vengono eseguiti per ultimi. Le routine languagetest testano anche alcune miscellanee(come gli archivi tar (1)).

Qualsiasi file che non può essere identificato come scritto in uno qualsiasi dei set di caratteri sopra elencati è semplicemente detto “dati”.

Opzioni

 -b, --brief

Non anteporre i nomi dei file alle linee di output (modalità breve).

-C, compile compile
Scrivi una magia.file di output mgc che contiene una versione pre-analizzata del file o della directory magic.

-c, checking checking-printout
Causa una stampa di controllo della forma analizzata del file magic. Questo viene solitamente utilizzato in combinazione con il flag-m per eseguire il debug di un nuovo file magico prima di installarlo.

-e, exclude exclude testname
Esclude il test denominato in testname dall’elenco dei test effettuati per determinare il tipo di file. I nomi di test validi sono:

apptype
Tipo di applicazione EMX (solo su EMX).

text ‘ Vari tipi di file di testo (questo test cercherà di indovinare la codifica del testo, indipendentemente dall’impostazione dell’opzione ‘encoding’).

encoding
Diverse codifiche di testo per soft magic test.

token ‘ Cerca token noti all’interno di file di testo.

cdf ‘ Stampa i dettagli dei file di documenti composti.

compress
Controlla e guarda all’interno i file compressi.

elf’ Stampa i dettagli del file ELF.

soft ‘ Consulta i file magici.

tar ‘ Esamina i file tar.

-F, separator separator separator
Usa la stringa specificata come separatore tra il nome del file e il risultato del file restituito. Il valore predefinito è’:’.

-f, files files-from namefile
Leggere i nomi dei file da esaminare dal namefile (uno per riga) prima della lista degli argomenti. O namefile o almeno un filenameargument deve essere presente; per testare lo standard input, utilizzare ‘ – ‘ come argomento filename.

-h, option no-dereference
opzione fa sì che i collegamenti simbolici non vengano seguiti (su sistemi che supportano collegamenti simbolici). Questo è il valore predefinito se la variabile di ambiente POSIXLY_CORRECT non è definita.

-i, mim mime
Fa sì che il comando file emetta stringhe di tipo mime piuttosto che quelle più tradizionali leggibili dall’uomo. Quindi potrebbe dire ‘text / plain; charset=us-ascii’ piuttosto che ‘ASCII text’. Affinché questa opzione funzioni, file cambia il modo in cui gestisce i file riconosciuti dal comando stesso (come molti tipi di file di testo, directory, ecc.) (Vedere la sezione FILE, sotto).

type mime-type, encoding mime-encoding
Like-i, ma stampa solo gli elementi specificati.

-L, der dereference
opzione fa sì che i collegamenti simbolici da seguire, come l’opzione con nome simile in ls(1) (sui sistemi che supportano i collegamenti simbolici). Questo è il valore predefinito se è definito environmentvariable POSIXLY_CORRECT.

-m, magic magic-file magicfiles
Specifica un elenco alternativo di file e directory contenenti magic. Questo può essere un singolo elemento o un elenco separato da due punti. Se viene trovato un file magico compilatolungo un file o una directory, verrà utilizzato al suo posto.

-N, no no-pad
Non tamponare i nomi dei file in modo che si allineino nell’output.

-n, no no-buffer
Forza lo stdout da svuotare dopo aver controllato ogni file. Questo è utile solo se si controlla un elenco di file. È destinato ad essere utilizzato da programmi che desiderano filetypeoutput da una pipe.

-p, preserve preserve-date
Sui sistemi che supportano utime(2) o utimes(2), tentare di preservare il tempo di accesso dei file analizzati, per fingere che il file non li legga mai.

-r, raw raw
Non tradurre caratteri non stampabili in \ooo. Normalmente il file traduce i caratteri non stampabili nella loro rappresentazione ottale.

-s, special special-files
Normalmente, file tenta solo di leggere e determinare il tipo di file di argomenti che i rapporti stat(2) sono file ordinari. Ciò impedisce problemi, perchéla lettura di file speciali può avere conseguenze peculiari. Specificare l’opzione-s fa sì che il file legga anche i file di argomenti che sono file speciali di blocco o carattere. Questo è utile per determinare i tipi di file system dei dati nelle partizioni del disco raw, che sono file speciali di blocco. Questa opzione fa sì che il file trascuri la dimensione del file come riportato da stat(2) poiché su alcuni sistemi riporta una dimensione zero per le partizioni del disco raw.

-v, version version
Stampa la versione del programma ed esci.

-z, unc uncompress
Prova a guardare all’interno dei file compressi.

help help
Stampa un messaggio di aiuto ed esci.

File

/usr/share/misc/magic.mgc

Elenco predefinito compilato di magic.
/usr/share/misc / magic’ Directory contenente i file magici predefiniti.

Ambiente

La variabile d’ambiente MAGIC può essere utilizzata per impostare il nome file magic predefinito. Se questa variabile è impostata, il file non tenterà di aprire HOME HOME/.magia. file aggiunge’.mgc ‘ al valore di questa variabile, a seconda dei casi. La variabile di ambiente POSIXLY_CORRECT controlla (su sistemi che supportano collegamenti simbolici), se il file tenterà di seguire collegamenti simbolici o meno. Se impostato, il file segue il collegamento simbolico, altrimenti non lo fa. Questo isalso controllato dalle opzioni – L e-h.

Vedi Anche

magic(5), strings(1), od(1), hexdump(1,) file(1posix)

Standard Conformance

Si ritiene che questo programma superi la System V Interface Definition of FILE(CMD), il più vicino possibile a determinare dal linguaggio vago in esso contenuto.Il suo comportamento è per lo più compatibile con il programma System V con lo stesso nome. Questa versione conosce più magia, tuttavia, quindi produrrà output diversi (anche se più accurati) in molti casi.

L’unica differenza significativa tra questa versione e System V è che questa versione considera qualsiasi spazio bianco come delimitatore, in modo che gli spazi in patternstrings debbano essere sfuggiti. Ad esempio,

>10 string language impress (imPRESS data)

in un file magic esistente dovrebbe essere cambiato in

>10 string language\ impress (imPRESS data)

Inoltre, in questa versione, se una stringa di pattern contiene una barra rovesciata, deve essere sfuggita. Ad esempio

0 string \begindata Andrew Toolkit document

in un file magic esistente dovrebbe essere cambiato in

0 string \\begindata Andrew Toolkit document

SunOS releases 3.2 e versioni successive di Sun Microsystems includono un comando file derivato da System V one, ma con alcune estensioni. La mia versione differisce da quella di Sun solo in modi minori. Include l’estensione dell’operatore’&’, utilizzato come, ad esempio,

>16 long&0x7fffffff >0 not stripped

Magic Directory

Le voci del file magic sono state raccolte da varie fonti, principalmente USENET, e fornite da vari autori. Christos Zoulas (indirizzo sotto) willcollect ulteriori o corrette voci di file magico. Un consolidamento delle voci del file magic verrà distribuito periodicamente.

L’ordine delle voci nel file magic è significativo. A seconda del sistema che si sta utilizzando, l’ordine in cui vengono messi insieme potrebbe non essere corretto. Se il tuo vecchio comando file utilizza un file magico, mantieni il vecchio file magico per scopi di confronto (rinominalo in /usr/share/misc/magic.orig).

Esempi

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

collegate dinamicamente (utilizza condivisa libs), spogliato

/dev/wd0a: blocco speciale (0/0)
/dev/hda: blocco speciale (3/0)

$ file -s /dev/wd0{b,d}
/dev/wd0b: dati
/dev/wd0d: x86 boot sector

History

C’è stato un comando file in ogni UNIX almeno dalla versione di ricerca 4 (pagina man datata novembre 1973). La versione di System V ha introdotto un cambiamento importante significativo: l’elenco esterno dei tipi magici. Questo ha rallentato leggermente il programma, ma lo ha reso molto più flessibile.

Questo programma, basato sulla versione System V, è stato scritto da Ian Darwin <[email protected]> senza guardare il codice sorgente di nessun altro.

John Gilmore revisionò ampiamente il codice, rendendolo migliore della prima versione. Geoff Collyer ha trovato diverse inadeguatezze e ha fornito alcuni magic fileentries. Contributi dell’operatore’& ‘ di Rob McMahon, [email protected], 1989.

Guy Harris, [email protected], ha fatto molti cambiamenti dal 1993 ad oggi.

Sviluppo primario e manutenzione dal 1990 ad oggi di Christos Zoulas ([email protected]).

Modificato da Chris Lowth, [email protected], 2000: Gestire l’opzione – i per generare stringhe di tipo mime, utilizzando un file magico alternativo e una logica interna.

Modificato da Eric Fischer ([email protected]), luglio 2000, per identificare i codici dei caratteri e tentare di identificare le lingue dei file non ASCII.

Modificato da Ruben Thomas ([email protected]), dal 2007 al 2008, per migliorare il supporto MIME e unire MIME e non MIME magic, supportare directory e file ofmagic, applicare molte correzioni di bug e migliorare il sistema di compilazione.

L’elenco dei contributori alla directory ‘magic’ (magic files) è troppo lungo per essere incluso qui. Sai chi sei, grazie. Molti contributori sono elencatinei file di origine.il nostro sito utilizza cookie tecnici e di terze parti per migliorare la tua esperienza di navigazione. Coperto dal copyright standard Berkeley Software Distribution; vedere il file LEGALE.AVVISO nella distribuzione sorgente.

I file tar.h e is_tar.c sono stati scritti da John Gilmore dal suo pubblico dominio tar(1) programma, e non sono coperti dalla licenza di cui sopra.

Bug

Ci deve essere un modo migliore per automatizzare la costruzione del file magico da tutto il glop in Magdir. Che è?

il file utilizza diversi algoritmi che favoriscono la velocità rispetto alla precisione, quindi può essere fuorviato sul contenuto dei file di testo.

Il supporto per i file di testo (principalmente per i linguaggi di programmazione) è semplicistico, inefficiente e richiede la ricompilazione per l’aggiornamento.

L’elenco delle parole chiave in ascmagic probabilmente appartiene al file Magic. Questo potrebbe essere fatto usando alcune parole chiave come ‘ * ‘ per il valore di offset.

Si lamentano dei conflitti nelle voci del file magic. Fai una regola che le voci magiche ordinino in base all’offset del file piuttosto che alla posizione all’interno del file magico?

Questa pagina di manuale, e in particolare questa sezione, è troppo lunga.

Codice di ritorno

file restituisce 0 in caso di successo, e diverso da zero in caso di errore.

Se il file denominato dall’operando del file non esiste, non può essere letto o non è possibile determinare il tipo di file denominato dall’operando del file, questo non è considerato un errore che influisce sullo stato di uscita.

Disponibilità

È possibile ottenere l’ultima versione dell’autore originale tramite FTP anonimo su ftp.astron.com nella directory / pub / file / file-X. YZ.impeciare.gz

BSD 9 ottobre 2008 BSD

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.