Ich habe eine "normal" aussehende Textdatei (enthält englische Sätze), die vom file
Befehl als erkannt wird ASCII Pascal program text
.
Wie unterscheidet sich der Pascal-Programmtext vom normalen englischen ASCII-Text?
Ich tat head -10 file > tmp
file tmp
zeigt immer noch Pascal
.
tmp
wenn in VI und geöffnet:set list
HELEN'S BABIES$
$
With some account of their ways, innocent, crafty, angelic, impish,$
witching and impulsive; also a partial record of their actions during$
ten days of their existence$
$
By JOHN HABBERTON$
$
$
$
Ausgabe von head file | od -c
0000000 H E L E N ' S B A B I E S \n \n
0000020 W i t h s o m e a c c o u n
0000040 t o f t h e i r w a y s ,
0000060 i n n o c e n t , c r a f t
0000100 y , a n g e l i c , i m p i
0000120 s h , \n w i t c h i n g a n d
0000140 i m p u l s i v e ; a l s o
0000160 a p a r t i a l r e c o r
0000200 d o f t h e i r a c t i o
0000220 n s d u r i n g \n t e n d a
0000240 y s o f t h e i r e x i s
0000260 t e n c e \n \n B y J O H N H
0000300 A B B E R T O N \n \n \n \n
0000314
Hier hochgeladene Datei: http://www.fileswap.com/dl/L0eCWJTvy/
Ich bin auf CentOS release 6.5
, file
Version5.04
Da ist etwas in der 4. Zeile. Wenn Sie ab der 4. Zeile entfernen, wird diese als einzige Textdatei erkannt
head file | od -c
, um nach nicht druckbaren Zeichen zu suchen .od
Ausgabe scheint nichts Seltsames zu enthalten .$HOME/.magic
oder$HOME/.magic.mgc
Datei?Antworten:
Ich konnte dies sowohl unter OS X 10.6.8 als auch unter OpenBSD 5.5-current reproduzieren.
Wenn Sie Debug-Informationen mit drucken
file -D tmp
, stellt sich heraus, dass Ihre Textdatei ungefähr 2000 Tests nicht besteht, bevorfile(1)
das Pascal-Schlüsselwort erkannt wirdrecord
und entschieden wird, dass es sich um einen Pascal-Programmtext handeln muss.Ein minimales Arbeitsbeispiel kann wie folgt erhalten werden:
Nach zahlreichen Heuristiken gilt nur der "dritte und letzte Satz von Tests, basierend auf festverdrahteten Annahmen" in ascmagic.c . Diese Tests erkennen "Dateitypen, die wir anhand von Schlüsselwörtern kennen, die an einer beliebigen Stelle in der Datei erscheinen können". Daher minimale Änderungen an der Datei Ergebnis in der korrekten Identifizierung wie
ASCII English text
zum Beispiel zu ändern ,their
umthe
in der dritten Zeile.quelle
file-5.19
erkennt die Datei von Op als ASCII-Text, aber Ihr Test zeigt Pascal-Quelle, ASCII-Text . Nach dem Versuchstrings /usr/share/file/misc/magic.mgc | grep -C 10 'pascal'
kann ich sehen, dass es sich um eine Aufzeichnung oder ein Programm am Anfang einer Zeile handelt oder (Eingabe, irgendwo im Text, was in meinem Fall eine solche Identifizierung auslöst. +1