linux-l: Magic Numbers

Carsten Paeth calle at calle.in-berlin.de
Mi Aug 6 15:24:24 CEST 1997


> 
> Hallo!
> 
> Ich wollte mal horchen, welche M=F6glichkeiten es gibt, Dateien zu
> unterscheiden / erkennen, ohne da=DF man dies aus dem Dateinamen ableitet,
> wie zum Besipiel =FCber "Extensions" unter DOS.
> 
> Bei Shell-Skripten soll man ja in der ersten Zeile angeben:
> #!/usr/bin/sh
> 
> bei Tcl/Tk, wenn man wish nutzt:
> #!/usr/X11R6/bin/wish -f

#!interpreter arguments
ist eine Standardmethode unter UNIX Scripte auszuführen.
In früheren Version der UNIX-Systeme hat das nur der Shell
ausgeführt. Inzwischen ist es auf allen gängigen UNIX-Systemen
im Kernel eingebaut.
Die aktuelle Version des Kommandos file(1) erkennt die meisten
scripte, da im /etc/magic die passende Angaben stehen.
Ich benutze momentan 
ftp://calle.in-berlin.de/pub/unix/usr.bin/file-3.15.tar.gz
+ ftp://calle.in-berlin.de/pub/unix/usr.bin/file-3.15g1-magic-diffs.tgz

> 
> Fragen: (1): Welche weiteren Kennungen gibt es / welche Programme nutzen
>              diese Kennung?
>              (Ich habe mal in bin=E4ren Dateien die Eintragung "ELF"
>               gefunden und Perl soll das Konzept wohl auch nutzen.)

Alle Script Interpreter .....

> 
>         (2): Wie kann man dieses Konzept selber sinnvoll f=FCr eigene
>              Anwendungen nutzen?

Eingenen Script Interpreter schreiben :-)

> 
>         (3): Sind diese Magic-Numbers immer auf die erste Zeile
>              der jeweils gekennzeichneten Datei beschr=E4nkt?=20
>          =20

Für Interpreteraufrufe, Ja.

>         (4): Wie ist so eine Kennung aufgebaut?

#!interpreter arguments

> 
>         (5): Wieso werden bei manchen Textdateien von "file" falsche
>              Ausgaben produziert? Wie kann man eine korrekte Erkennung
>              von Textfiles oder LaTeX-Files oder anderen Files erreichen?

Weil die Angaben in /etc/magic fehlen.

> 
>         (5): Ist eine Angabe wie "#!/usr/X11R6/bin/wish -f" bereits eine
>              "Magic Number", weil das Ausrufungszeichen eine bestimmte,
>               (die Bedeutung des Kommentarzeichens "#" aufhebende)
>               Bedeutung hat, oder sind "magic numbers" wirklich
>               Zahlenkennungen?

Der Eintrag in /etc/magic müßte lauten:
0       string          #!/usr/X11R6/bin/wish   Wish script text
0       string          #!\ /usr/X11R6/bin/wish   Wish script text

> 
> Tsch=FC=DF,
>     Oliver
> 
> 

so double

calle




Mehr Informationen über die Mailingliste linux-l