Erkennt Ubuntu (oder Linux allgemein) Dateien an den Dateiendungen oder gibt es andere Erkennungsmerkmale?

4 Antworten

wie erstellst du denn diese Datei? mit einem Texteditor, dann abspeichern und die Endung entfernen?

dann hat diese Datei intern eine Markierung "Ich bin eine Textdatei". und diese Markierung liest Ubuntu aus, weil Linux nicht auf Dateiendungen angewiesen ist und diese größtenteils ignoriert.

Windows wiederum interpretiert Dateien nach ihrer Dateiendung und sieht deswegen deine Datei ohne Endung einfach nur als Datei, ohne zuordenbaren Typ.

Wenn du eine Möglichkeit findest, eine Datei leer zu erstellen mit einem Musikeditor oder einem Bildbearbeitungsprogramm, und diese dann ohne Endung abspeicherst, wird Ubuntu wahrscheinlich diese Datei als entsprechende Musik- oder Bilddatei einordnen.

mir fällt gerade keine Möglichkeit ein, eine Datei leer zu erzeugen die keinen Typ besitzt und keinen Inhalt, die wirklich leer ist.

wofür soll das denn überhaupt gut sein? was bezweckst du damit?

Woher ich das weiß:Berufserfahrung – Langjährige Berufserfahrung als Verkäufer und Servicetechnik
ohwehohach  20.12.2018, 12:39
dann hat diese Datei intern eine Markierung "Ich bin eine Textdatei"

Sowas gibt es nicht. Eine leere Textdatei enthält nichts - auch keine Markierung.

Unter macOS gibt's sowas, aber nicht unter Windows und nicht unter Linux.

mir fällt gerade keine Möglichkeit ein, eine Datei leer zu erzeugen die keinen Typ besitzt und keinen Inhalt, die wirklich leer ist.

Eine Datei mit größe 0 Byte ist leer.

2
emer90  20.12.2018, 12:45
@ohwehohach

doch. nennt sich datei header. und macos ist nichts anderes als ein verdrehtes linux..

1
ohwehohach  20.12.2018, 12:48
@emer90

Sorry, aber lass Dir vom Informatiker sagen, dass das Quatsch ist.

1. hat der Mac das über separate Streams im Dateisystem gelöst. Das gibt's nicht unter normalen Linux Dateisystemen.

2. hat keine leere Datei einen Header. Eine Datei mit Größe 0 hat keinen Inhalt und somit auch keinen Header.

Übrigens erstellst Du unter Linux eine leere Datei mit dem Befehl "touch <dateiname>".

1
Phoenix2018  20.12.2018, 12:49
@ohwehohach

ok, grad mal ausprobiert. tatsächlich enthält eine mit Notepad abgespeicherte Datei keine Offsetmarkierung Text.

ich weiß dass JPG, DOC, MP3 ... alle Header haben die diese Dateien als eben jene ausweisen. bei TXT scheint das nicht der Fall zu sein, wenn sie ohne Inhalt gespeichert wird.

  • Notepad leere Datei ohne Endung gespeichert
  • mit HexEditor geöffnet -> Inhalt 0000000000
1
KarlRanseierIII  20.12.2018, 12:49
@ohwehohach

Ist eine 'Textdatei' die nur eine BOM enthält leer? Sie ist definitiv nicht 0 Bytes groß - enthält aber auch keinen darstellbaren Text - Ist dann aber definitiv auf Basis der BOM ein Textdokument.

Bei einer 0 Byte-Datei (ist hier ja der vorliegende Fall) bleibt natürlich nichts anderes als Textdatei übrig.

Ah mist, zu spät die Follow-Ups gesehen...

2
ohwehohach  20.12.2018, 12:51
@Phoenix2018

Ja, bei Formaten wie JPG, DOC und Co. stehen auch in einem "leeren Dokument" in einem so genannten Header-Block Informationen darüber, dass das Dokument nichts enthält :-)

1
ohwehohach  20.12.2018, 12:53
@KarlRanseierIII

Naja, jetzt kommt eben die Frage nach der Definition von "leer" :) Eine Datei ist leer, wenn sie keine bytes enthält. Ein Textdokument ist leer, wenn es keinen Text enthält. Aber ein leeres Textdokument, gespeichert als Unicode-File mit BOM kann durchaus 2 Byte Dateigröße erzeugen.

Und wie ich schon in einem Kommentar unten schrieb: Eine Textdatei, die nur die BOM enthält, müsste dennoch 2 Byte lang sein und dann anhand der BOM endeutig als Textdokument erkannt werden.

1
LemyDanger57  20.12.2018, 12:58
@emer90
und macos ist nichts anderes als ein verdrehtes linux..

Woher hast Du denn diese Erkenntnis? macOS hat nichts mit Linux zu tun, sondern basiert, im Wesentlichen auf "Darwin", einem freien Unix-Betriebssystem der Firma Apple, welches wiederum in wesentlichen Teilen von BSD abstammt.

4
Tuxgamer42  20.12.2018, 13:17
@emer90
und macos ist nichts anderes als ein verdrehtes linux..

Wenn dann bitte verdrehtes BSD - nicht Linux - wenn du schon mit solchen pseudo-korrekten "Ist"-Beziehungen daherkommen willst, die mehr zu paradoxen Aussagen führen und Leute verwirren als wirklich nützen.

4
ohwehohach  20.12.2018, 13:28
@Tuxgamer42

Bei HFS waren es so genannte Resource Forks. Da standen dann solch erweiterte Sachen drin, wie beispielsweise ein Creator ID. Und anhand dessen konnte macOS die dafür registrierte Anwendung ermitteln.

Und klar, wenn Du eine Datei auf einem entsprechenden Dateisystem hast, dann kannst Du diese erweiterten Attribute natürlich auch nutzen.

Aber spätestens beim Übergang von einem zum anderen wird's dann schwierig. Da gehen diese Dinge meist verloren.

Wenn Du also auf einem Linux mit einem entsprechenden Dateisystem eine Datei anlegst und dadurch entsprechende Informationen in den erweiterten Attributen landen, sind die spätestens unter Windows/NTFS wieder weg.

Außerdem wird das eben unter Windows nicht gemacht. Auch hier gibt es so genannte Alternate Data Streams, aber in die wird von Notepad nicht reingeschrieben, was es für ein Dateityp ist. Windows wertet die auch nicht diesbezüglich aus.

Und schon gar nicht bleiben die beim Kopieren auf eine FAT-Partition der SD-Karte eines RasPi erhalten :-)

Ich wollte nur damit sagen, dass es keine generellen Dateiheader gibt, sondern dass es beim Mac beispielsweise die Resource/Data Forks gab, es aber diese nicht in kompatibler Form unter Linux gibt.

3
Linuxhase  21.12.2018, 22:37
@ohwehohach

Was ist hiermit?

linuxhase@Linuxhase-Desk ~$ touch leeredatei
############################################################################
linuxhase@Linuxhase-Desk ~$ stat leeredatei
 Datei: 'leeredatei'
 Größe: 0             Blöcke: 0         EA Block: 4096  Normale leere Datei                                                                                     
Gerät: 811h/2065d      Inode: 104610589  Verknüpfungen: 1
Zugriff: (0664/-rw-rw-r--) Uid: ( 1000/linuxhase)  Gid: ( 1000/linuxhase)
Zugriff   : 2018-12-21 22:34:00.882268030 +0100
Modifiziert: 2018-12-21 22:33:59.950261909 +0100
Geändert  : 2018-12-21 22:33:59.950261909 +0100
 Geburt   : -
############################################################################
linuxhase@Linuxhase-Desk ~$ file leeredatei
leeredatei: empty
############################################################################
linuxhase@Linuxhase-Desk ~$ ls -i leeredatei
104610589 leeredatei
0
ohwehohach  22.12.2018, 18:22
@Linuxhase

Ist doch klar, dass wir hier über irgendwelche Dateimanager eines Fenstersystems reden. Aus Gründen der Bequemlichkeit habe ich Linux und „das, was der FS davon sieht“ mal gleichgesetzt.

Natürlich ist die Datei leer - aber offenbar zeigt das der entsprechende Dateimanager nicht an und geht dann davon aus (mangels Inhalt), dass es nichts binäres ist.

1
XxDaniel2011 
Fragesteller
 20.12.2018, 12:40

Ja genau unter Windows habe ich die Datei mit einem Editor gemacht und dannach manuell die Dateierweiterung entfernt. Ich brauche das um eine leere ssh Datei zu erstellen um an meinen Raspberry pi ssh zu aktivieren.

0
ohwehohach  20.12.2018, 12:41
@XxDaniel2011

Eine solche Datei hat keinen Inhalt, keine "Markierung" oder sonstwie, sondern wird einfach nur, weil nichts anderes bekannt ist, als einfache Textdatei eingestuft - sie ist eben keine Binärdatei und auch sonst nichts.

Was es gibt ist: Wenn Du eine Unicode-Textdatei erzeugst, dann kann am Anfang ein unsichtbares Byte Order Mark (BOM) stehen, welches aussagt, welche Art Unicode es ist. Aber das ist 2 Byte lang und somit müsste die Datei eine Größe von 2 Byte haben.

1
XxDaniel2011 
Fragesteller
 20.12.2018, 12:43
@ohwehohach

Vielen Danke, für deine Hilfe, ich werde mich da etwas besser einlesen :)

0
emer90  20.12.2018, 12:50
@XxDaniel2011

bei älteren raspian versionen konnte man genau so wie du es getan hast eine "leere" datei erstellen, diese in ssh unbenennen und ins bootverzeichnis der fat-patition kopieren, um ssh zu aktivieren. sollte eigentlich immernoch klappen. da brauchte auch nicht anfangen mit den unicode rumzuspielen.

1
ohwehohach  20.12.2018, 12:55
@emer90
da brauchte auch nicht anfangen mit den unicode rumzuspielen.

Hat auch niemand verlangt ;-)

2

Nun ja, der Typ einer Datei richtet sich unter Linux nach anderen Kriterien als unter Windows.

Bei Windows wird alles an der Endung festgemacht. Wenn Du eine Datei ohne Endung hast, dann weiß Windows nicht, was es ist.

Bei Linux wird es am Inhalt festgemacht, wenn keine Endung vorhanden ist.

Eine leere Datei kann daher nichts anderes sein als ein einfaches Textdokument: um ein Binary-Fomat zu sein, müsste sie irgendwelche Bytes zwischen 0 und 31 enthalten - alle bytes oder double-bytes darüber stellen druckbare Zeichen dar und wären dann ebenfalls reiner Text.

Bilderdateien und Co kommen nicht infrage, weil diese auch dann, wenn sie keinen Bildinhalt haben, dennoch einen Header haben, anhand dessen sich der Typ bestimmt.

Somit hat Linux Recht.

XxDaniel2011 
Fragesteller
 20.12.2018, 12:37

Ok, vielen Dank für die schnelle Antwort :)

0

Unter Linux erstellst du eine leere Datei mit einen kleinen Umweg:

touch Dateiname

touch setzt die Zugriffszeit für Dateiname und erstellt die Datei wenn sie noch nicht da ist.

Unter Dos/Windows funktioniert:

copy con Dateiname

^Z

Damit schreibst du alles was du eingibst in die Datei Dateiname. Control+z bzw strg+z beendet die Eingabe.

Linux erkennt die Datei anhand der Definition im Header. Tippe 'file Datei. xyz' in die Konsole und egal welche Endung du vergibt, oder gar keine, die Datei wird erkannt.

Woher ich das weiß:Berufserfahrung