sonnenblen.de - Das unabhängige Sun User Forum Der Treffpunkt für Sun-Fans seit 2001
  Übersicht   Forum   Hilfe Suche Einloggen Registrieren   *
Suche
Google
Erweiterte Suche
Willkommen Gast. Bitte einloggen oder registrieren.
08. Februar 2012, 17:31:52

Einloggen mit Benutzername, Passwort und Sitzungslänge
Letzte 5 Shouts:
21. September 2011, 17:02:09
USENET? - Tolles Ding!
11. September 2011, 15:09:12
Super Wetter!
09. August 2011, 16:50:16
KACK Wetter !
12. August 2009, 09:48:47
Erstelle einfach ein paar Threads, bis das Ding nach unten rutscht. Ich habe das gar nicht gesehen, da ich immer direkt ins Forum einsteige.
12. August 2009, 07:34:46
Fühlt sich niemand für die Entfernung der Genital-Verlängerungs-Bilder auf der Startseite zuständig?
Spenden
Anzeige
Berechtigungen

Anzeige
Seiten: [1]   Nach unten
  Drucken  
Autor Thema: Wer/Was definiert File-Types ?  (Gelesen 885 mal)
Hexxer
Sobl Master
****
Offline Offline

Beiträge: 311


« am: 22. September 2010, 13:23:18 »

Hi,

ich wusste nicht wo ich die Frage mal stellen kann. Das unten angesprochene Grep geht auch auf Linux nicht.

Eine Frage. Wo/wer oder was bestimmt was für ein File ich habe ?
Beispiel unter Solaris "file abcd.....Ausgabe Aciii Text" oder Commands Text usw..

Hintergrund: Ich hab eine Textfile aus Windows was ich unter Solaris problemlos lesen kann (Klartext). Allerdings funktioniert kein Grep. cat abcd | grep test gibt kein Ergebnis zurück, keine Fehler, kein nichts.
File sagt "Commands text".

Vermutet wird das es ein Binärfile ist oder zumindest so definiert ist.  Daraus ergibt sich die durchaus spannende Frage für mich: Wo ist definiert oder wer erkennt was ein File ist ?
Gespeichert

rm -rf /diesel
touch /benzin/lpg
svcadm disable svc:/diesel/stinker:default
svcadm enable svc:/benzin/lpg:default
echo $preis
"Cheesy"
sonnenblen.de - Das unabhängige Sun User Forum
« am: 22. September 2010, 13:23:18 »

 Gespeichert
oreissig
Sobl Junior
**
Offline Offline

Beiträge: 54


« Antworten #1 am: 22. September 2010, 13:52:34 »

Es gibt unter Unix keinen Dateityp in dem Sinne, file wendet ausschließlich Heuristiken an und schätzt dann, was wohl in der datei sein könnte.

Meine Vermutung ist bisher die, dass da wohl beim kopieren was schiefgelaufen ist.
Wenn du nur cat $DATEINAME machst, siehst du denn dann auch das gleiche, wie an der windows-kiste?
Gespeichert
escimo
Sobl Guru
*****
Offline Offline

Beiträge: 1428

eiskaltes Unwissen


« Antworten #2 am: 22. September 2010, 15:00:53 »

"file" liest (auch) den Header der jeweils angegebene Datei aus, z.B. bei PDF:

$ file sparc-t3-chip-ds-173097.pdf
sparc-t3-chip-ds-173097.pdf: PDF document, version 1.5


@Hexxer: Was passiert, wenn du dos2unix <deine_Datei> und anschließend ein grep drauf machst?
Gespeichert
Ebbi
Sobl Guru
*****
Offline Offline

Beiträge: 1296


Minusgeek


« Antworten #3 am: 22. September 2010, 15:13:12 »

Das steht in der /etc/magic:
http://publib.boulder.ibm.com/infocenter/aix/v6r1/index.jsp?topic=/com.ibm.aix.files/doc/aixfiles/magic.htm

Wenn in der Datei abcd der String test nicht vorkommt, wird auch nichts zurückgegeben.

Guck doch mal mit od -c abcd nach.
Gespeichert

escimo
Sobl Guru
*****
Offline Offline

Beiträge: 1428

eiskaltes Unwissen


« Antworten #4 am: 22. September 2010, 15:28:59 »

Wenn ich in meine /etc/magic unter Linux (Ubuntu 8.10), sehe ich nur einen Kommentar drin:
Code:
# Magic local data for file(1) command.
# Insert here your local magic data. Format is described in magic(5).
Das ist bei Ubuntu (8.10) in einem anderen Pfad untergebracht: /usr/share/file/magic

... auch nachzulesen unter:
$ man 5 magic

Kann also locker erweitert werden.
« Letzte Änderung: 22. September 2010, 15:33:02 von escimo » Gespeichert
sonnenblen.de - Das unabhängige Sun User Forum
« Antworten #4 am: 22. September 2010, 15:28:59 »

 Gespeichert
Hexxer
Sobl Master
****
Offline Offline

Beiträge: 311


« Antworten #5 am: 22. September 2010, 17:44:57 »

Hi,

die Datei ist ein Log des Windows-Zeitdienstes. Kann man tatsächlich ganz normal in jedem Editor lesen, cat geht, more geht, vi unter Solaris scheinbar auch.
Ein Kollege hat unter Linux bei der Datei nur Unsinn stehen, nicht human readable.

dos2unix - geht nicht
cat datei > neue Datei - geht nicht
tail -100 datei > neue datei - geht nicht

geht nicht bedeutet das man die neue Datei ansehen kann (und auch lesen geht), aber das grep läuft wieder nicht.
Zitat
od -c abcd
Hab ich gesehen weil ein Kollege das vorgeschlagen hat. Octetdump, OK. Aber was sollte der anzeigen ? Hab das einmal vor Jahren ausgeführt und da lief nur na Matrix-ähnliche schlange über den Screen.

Alles in allem reichlich Mysteriös. Nicht kriegsentscheidend, aber mysteriös Cheesy
Gespeichert

rm -rf /diesel
touch /benzin/lpg
svcadm disable svc:/diesel/stinker:default
svcadm enable svc:/benzin/lpg:default
echo $preis
"Cheesy"
Hexxer
Sobl Master
****
Offline Offline

Beiträge: 311


« Antworten #6 am: 22. September 2010, 18:08:59 »

Hi,

so, ich hab das ganze mal @Home nachgestellt. Allerdings auf nem win7 Hosts. Windows.Zeit Debugger eingeschaltet (Google w32time debug), ein Log schreiben lassen.
Hab Linux hier, das zeigt es als "Data" an, wenngleich der Inhalt per cat lesbar ist und grep nicht geht. Hab kein Solaris hier, aber sol10/sparc hat sowas @work als Text gesehen.

Im Anhang das File. Hab es als "w32time.log" erstellen lassen, damit ich es hier reinhängen kann hab ich das .txt hinten dran gehängt.

MFG
Gespeichert

rm -rf /diesel
touch /benzin/lpg
svcadm disable svc:/diesel/stinker:default
svcadm enable svc:/benzin/lpg:default
echo $preis
"Cheesy"
Fleedwood
Sobl Newbie
*
Offline Offline

Beiträge: 24


« Antworten #7 am: 22. September 2010, 20:21:13 »

das sind wide character, womit dann viele 0 bytes drin sind, was den grep zu bemerkung binary file hinreißt und letztendlich ein simples
greppen nach abcd zum scheitern verurteilt

recode -f UTF-16LE < <file>

wirft schon ganz schön viel zum greppen aus...

Thomas.
Gespeichert
Hexxer
Sobl Master
****
Offline Offline

Beiträge: 311


« Antworten #8 am: 23. September 2010, 04:31:33 »

OK, was auch immer wide Charakters sind. Da musst du ja auch ersteinmal drauf kommen. Wäre ich nie, sonst hätte ich nicht gefragt. Gerade bei nem Standard-Logfile. Nunja, MS hat Standards ja eh gerne selbst definiert ;9 Cheesy
Gespeichert

rm -rf /diesel
touch /benzin/lpg
svcadm disable svc:/diesel/stinker:default
svcadm enable svc:/benzin/lpg:default
echo $preis
"Cheesy"
Fleedwood
Sobl Newbie
*
Offline Offline

Beiträge: 24


« Antworten #9 am: 23. September 2010, 07:51:52 »

OK, was auch immer wide Charakters sind. Da musst du ja auch ersteinmal drauf kommen. Wäre ich nie, sonst hätte ich nicht gefragt. Gerade bei nem Standard-Logfile. Nunja, MS hat Standards ja eh gerne selbst definiert ;9 Cheesy

naja wirklich Standard hat das M$ nicht gemacht, ist halt eine 16Bit Codierung von Unicode. Aber anstatt den zwar zum Teil auch etwas häßlichern Einsatz von UTF-8
war M$ IMHO idiotischerweise der Meinung 16 Bit Charcter einzuführen...

Thomas.
Gespeichert
sonnenblen.de - Das unabhängige Sun User Forum
« Antworten #9 am: 23. September 2010, 07:51:52 »

 Gespeichert
Hexxer
Sobl Master
****
Offline Offline

Beiträge: 311


« Antworten #10 am: 23. September 2010, 08:11:37 »

OK. Gerade mal geschaut, zumindest unter Standard-Solaris gibts kein Recode. Wie gesagt, nicht weiter tragisch, ich hab alles was ich brauche.
Ist an sich ja wohl auch ein eher seltener Zufall.

MFG
Gespeichert

rm -rf /diesel
touch /benzin/lpg
svcadm disable svc:/diesel/stinker:default
svcadm enable svc:/benzin/lpg:default
echo $preis
"Cheesy"
Fleedwood
Sobl Newbie
*
Offline Offline

Beiträge: 24


« Antworten #11 am: 23. September 2010, 08:25:14 »

ist ein GNU tool.

Thomas.
Gespeichert
Ten Little Indyans
Sobl Bachelor
***
Offline Offline

Beiträge: 208


« Antworten #12 am: 23. September 2010, 09:58:09 »

Entsprechendes Solaris-Bordmittel ist iconv.

Ich hatte zwar schon obskure Fälle die nicht liefen, aber mit UTF-16 kann bereits Solaris 8 umgehen. (Die Datei habe ich mit Windows Notepad erzeugt und als "Unicode" gespeichert.

Code:
$uname -rsp
SunOS 5.8 sparc
$cat unitest.txt
��Dies ist ein Test
$od -c unitest.txt
0000000 377 376   D  \0   i  \0   e  \0   s  \0      \0   i  \0   s  \0
0000020   t  \0      \0   e  \0   i  \0   n  \0      \0   T  \0   e  \0
0000040   s  \0   t  \0  \r  \0  \n  \0
0000050
$grep Test unitest.txt
$iconv -f UTF-16 -t UTF-8 unitest.txt | grep Test
Dies ist ein Test
$iconv -f UTF-16 -t 8859-1 unitest.txt | grep ein
Dies ist ein Test

Die beiden Sonderzeichen am Anfang der Datei sind das BOM (Byte Order Mark) mit dem die Datei als Little-endian identifiziert werden kann.

Bei der Konvertierung von UTF-16 wird das BOM automatisch entsorgt. Gibt man explizit UTF-16LE an so wird offenbar versucht es mit zu konvertieren... Huh

Code:
$iconv -f UTF-16 -t 8859-1 unitest.txt | od -c
0000000   D   i   e   s       i   s   t       e   i   n       T   e   s
0000020   t  \r  \n
0000023
$iconv -f UTF-16LE -t 8859-1 unitest.txt | od -c
0000000   ?   D   i   e   s       i   s   t       e   i   n       T   e
0000020   s   t  \r  \n
0000024
Gespeichert
Seiten: [1]   Nach oben
  Drucken  
 
Gehe zu:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC
TinyPortal v0.9.8 © Bloc
Prüfe XHTML 1.0 Prüfe CSS
sonnenblen.de, mood-indigo.org, unixforum.net und realcomputers.org sind Projekte der steinbruch.info GbR

Google war zuletzt hier 30. Januar 2012, 12:23:54