Welche Erweiterung soll für Textdateien verwendet werden? (Unix / Linux)

20

Mir ist aufgefallen, dass ich auch ohne Dateierweiterung einwandfreie Textdateien lesen kann .txt. Woher? Soll ich diese Dateien mit oder ohne die .txtErweiterung speichern ?

Und was ist mit .iniDateien? Ich benutze sie normalerweise so: config.iniSoll ich die Erweiterung hier entfernen?

Alle allgemeinen Ressourcen zum Umgang mit Dateierweiterungen unter Linux sind hilfreich.

jcora
quelle

Antworten:

37

UNIX / Linux hat nicht dasselbe frühe DOS / CP / M-Erbe wie Windows. Daher sind Erweiterungen für die meisten UNIX-Dienstprogramme und -Tools im Allgemeinen weniger wichtig.

Normalerweise verwende ich nur eine Befehlszeilenumgebung. Erweiterungen in einer solchen Umgebung unter Linux sind nur aus Bequemlichkeitsgründen für den Bediener oder Benutzer von Bedeutung. (Ich habe nicht genug Erfahrung mit KDE oder GNOME, um zu wissen, wie ihre Dateimanager mit Erweiterungen umgehen.)

Aber solche Bequemlichkeit ist normalerweise wichtig. Wenn config.inies wirklich im Microsoft-Standard ".ini" -Format ist, würde ich die Erweiterung stehen lassen. Einfache alte Textdateien haben in Linux normalerweise keine Erweiterung, dies ist jedoch nicht für alle Programmkonfigurationsdateien universell. Der Programmierer kann das normalerweise entscheiden.

Ich denke, ".txt" ist unter Linux nützlich, wenn Sie betonen möchten, dass es sich NICHT um eine Konfigurationsdatei oder ein anderes maschinenlesbares Dokument handelt. In Quelldistributionen ist es jedoch üblich, solche Dateien alle Großbuchstaben ohne Erweiterung zu benennen (dh README, INSTALL, COPYING usw.).

Es gibt einige Standards und Konventionen, aber nichts hindert Sie daran, irgendetwas zu benennen, was immer Sie wollen, es sei denn, Sie teilen Dinge mit anderen.

Unter Windows bedeutet die Benennung einer Datei .exefür die Shell (normalerweise explorer.exe), dass es sich um eine ausführbare Datei handelt. UNIX baut dieses Wissen in die Berechtigungen des Dateisystems ein. Wenn die richtigen xBits (siehe man chmod) gesetzt sind, wird dies von Shells und Kernelfunktionen als ausführbar erkannt (glaube ich). Darüber hinaus kümmert es Linux nicht, die meisten Shells kümmern sich nicht darum, und die meisten Programme sehen in der Datei nach, ob es sich um einen "Typ" handelt.

Natürlich gibt es den netten Befehl, fileder die Datei analysieren und Ihnen mit Sicherheit sagen kann, was sie ist. Ich glaube, wenn es die Daten in der Datei nicht mit einem bekannten Typ abgleichen kann und wenn es nur druckbare ASCII / Unicode-Zeichen enthält, dann nimmt es an, dass es eine Textdatei ist.


@ Bruce Ediger unten ist absolut richtig. Es gibt nichts auf Kernel- oder Dateisystemebene, dh Linux selbst, das erzwingt oder dafür sorgt, dass der Inhalt einer Datei mit ihrem Namen oder dem Programm, das sie verstehen soll, übereinstimmt. Dies bedeutet nicht, dass es nicht möglich ist, eine Shell oder ein Startprogramm zu erstellen, um Dinge basierend auf dem Dateinamen auszuführen.

LawrenceC
quelle
7
Es ist auch nützlich, wenn Sie viel in der Konsole arbeiten, da gut benannte Dateien mit Globbing leichter von anderen Dateien unterschieden werden können.
Lynxlynxlynx
9
Sie sollten betonen, dass Linux-Dateinamen keine "Erweiterungen" haben - der ".txt" -Teil eines Dateinamens, der ihn enthält, ist lediglich eine Teilzeichenfolge. Sie sollten auch betonen, dass die interne Dateiorganisation (LF-endende Zeichenfolgen, CR-LF-endende Zeichenfolgen, Datensätze mit fester Größe usw.) nicht einmal in geringem Zusammenhang mit dem Namen steht, und dass die "App" die mit der Datei verknüpfte Datei nicht über den Namen kennt .
Bruce Ediger
2
Ich denke, nur die FAT16 8.3-Verzeichniseinträge unter DOS hatten ein separates 3-Byte-Feld für die Erweiterung. FAT32 hat das 8.3-Feld aus Kompatibilitätsgründen beibehalten, aber der tatsächliche "lange Dateiname" ist eine Zeichenfolge ohne separates Erweiterungsfeld, aufgeteilt in mehrere Verzeichniseinträge ( fandecheng.com/personal/interests/ewindows/nuhelp/lfnspec.htm )
LawrenceC
23

Im Gegensatz zu Windows wird in UNIX-Systemen der Dateityp nicht durch die Erweiterung bestimmt. Die Dateierweiterung ist und war lediglich ein visueller Indikator für den Menschen. Sie können JPEG foo.c benennen und in Gimp öffnen. Ein weiterer Unterschied zu Windows besteht darin, dass Sie auf UNIX-Systemen den gesamten Dateinamen verwenden müssen, während Windows diesen häufig für Sie erledigt (z. B. "Nur explorergegen" explorer.exe). Unter UNIX foo.shmuss da foo.shnicht einfach aufgerufen werden foo.

Per Konvention neigen Menschen dazu, einen gemeinsamen Satz von Erweiterungen zu verwenden. Diese Praxis ist zwar unnötig, aber wahrscheinlich für die gesamte Menschheit von Vorteil.

Bahamat
quelle
7
+1 fürThis practice…is probably beneficial for humanity at large
Ulrich Dangel
Schade, dass die Paketvielfalt manchmal die korrekte Handhabung von Mimen erschwert (z. B. in KDE aus meiner Erfahrung), obwohl ich nicht weiß, warum die Programme nicht auf die Überprüfung des magischen Bytes zurückgreifen.
Lynxlynxlynx
3
Weil es kein "magisches" Byte gibt. Das ist nur eine Abkürzung für "alle bekannten Dateitypen, die hinreichend gut dokumentiert und strukturiert sind, um mit hoher Sicherheit zuverlässig erkannt zu werden". Es funktioniert sehr gut für Text- oder Containerdateien. Es schlägt im Allgemeinen für alle rohen oder unbekannten Datentypen kläglich fehl.
Bahamat
1
@bahamat Es ist kein Byte, aber es gibt einen Teil der Datei, der traditionell als " magische Zahl " bezeichnet wird und der definieren soll, was die Datei enthält. Es ist das, worauf der fileBefehl abzielt. ( #!ist die magische Zahl für sh-Skripte zum Beispiel)
Izkata
1
@lzkata richtig, wie gesagt: "Bekannte Dateitypen, die hinreichend gut dokumentiert und strukturiert sind, um mit hoher Sicherheit zuverlässig erkannt zu werden".
Bahamat
7

Im Allgemeinen habe ich festgestellt, dass die Einhaltung einer strengen, beschreibenden Namenskonvention sehr hilfreich ist. Sie brauchen die Erweiterung nicht in Unix, aber ich würde sie aus zwei Gründen behalten:

1) Wenn diese Datei jemals von einem Windows-Computer gelesen wird, ist das Öffnen einfacher als der Versuch, "Öffnen mit ..." zu finden.

2) Extensions hilft Ihnen als Benutzer dabei, herauszufinden, was die Datei tut. In unserem Labor: .txt = Textdatei .sgi = Irix kompilierte Binärdatei .linux = Linux kompilierte Binärdatei

Wenn Sie ältere Unix-Computer verwenden müssen (wir verwenden immer noch IRIX), beachten Sie, dass der Wagenrücklauf auf * nix-Computern unterschiedlich ist und Programme es möglicherweise nicht begrüßen, wenn Sie versuchen, eine Datei mit Windows-Wagenrückläufen zu öffnen.

Lenz
quelle
3

Es gibt mehrere gute Antworten. Ich möchte einen Teil der ursprünglichen Frage weiter beantworten: "Alle allgemeinen Ressourcen zum Umgang mit Dateierweiterungen unter Linux sind hilfreich."

Es ist möglich, Erweiterungen zu registrieren, so dass Linux immer bestimmte Erweiterungen mit bestimmten Programmen öffnet. Diese Einrichtung heißt binfmt .

binfmt_misc ist eine Funktion des Linux-Kernels, mit der beliebige ausführbare Dateiformate erkannt und an bestimmte Benutzerbereichsanwendungen wie Emulatoren und virtuelle Maschinen übergeben werden können. Die ausführbaren Formate werden über eine spezielle Dateisystemschnittstelle (ähnlich wie / proc) registriert. Debian-basierte Distributionen bieten die Funktionalität durch ein zusätzliches binfmt-Support-Paket.

Jedes Format verfügt über einen entsprechenden Dateieintrag im Verzeichnis / proc / sys / fs / binfmt_misc, der gelesen werden kann, um Informationen zu einem bestimmten Dateiformat abzurufen.

Nicht jetzt
quelle
-2

.txt kann über verschiedene Anwendungen geöffnet werden. Wichtig ist jedoch, dass die Datei in einem bestimmten Typ klassifiziert wird. Sie können sehen, ob wir dieselbe Datei mit .html speichern, die die Datei im Internet Explorer zu öffnen versucht. Die Anwendungen werden entsprechend erstellt, um solche Dateitypen zu unterstützen. Wenn Sie oben .html verwenden, versucht der Compiler, die darin enthaltenen HTML-Attribute zu finden, und zeigt das Ergebnis entsprechend an. Gleiches gilt für die anderen Erweiterungen. INI-Datei kann als Text gelesen werden, aber die Erweiterung klassifiziert sie als Konfigurationsdatei und daher behandelt der Compiler sie als Konfigurationsdatei und nicht als gewöhnliche Textdatei, da die Textdatei nur ein Datensatz ist und keine spezifische Funktion wie die von hat. In diesem Fall möchten Sie die Erweiterung von ini nicht in text ändern

Sanjay Maharjan
quelle
6
Dies kann unter Windows der Fall sein, ist jedoch (wie in anderen Antworten erläutert) unter UN * X-basierten Betriebssystemen irrelevant.
Piskvor