Wenn eine Datei dem Betriebssystem das Dateiformat mitteilt, wie wählt das Betriebssystem die Anwendung aus, mit der es standardmäßig geöffnet werden soll?
Wird die Zuordnung unter Windows in der Registrierungstabelle gespeichert?
Wie wählt Linux die Anwendung aus, mit der eine Datei geöffnet werden soll?
Ich habe Nautilus oft benutzt, aber jetzt wechsle ich zum Terminal. Stimmt es, dass wir im Terminal immer explizit angeben müssen, mit welcher Anwendung eine Datei geöffnet werden soll? Gehört die Einstellung, mit welcher Anwendung eine Datei eines bestimmten Formats standardmäßig geöffnet werden soll, zum Dateimanager (z. B. Nautilus), und ist dies kein Problem, wenn wir in Terminals leben?
files
file-opening
Tim
quelle
quelle
Antworten:
Es kann verschiedene Mechanismen geben, um diese Standardeinstellungen zu handhaben. Andere Antworten konzentrieren sich jedoch in der Regel auf vollständige Desktopumgebungen, von denen jede über einen eigenen Mechanismus verfügt. Diese sind jedoch nicht immer auf einem System installiert (ich verwende häufig OpenBox), und in diesem Fall können Tools wie
xdg-open
diese verwendet werden.Zitieren des Arch- Wikis :
In diesem Moment benutze ich Ubuntu (12.04) und
xdg-open
ist verfügbar. Wenn Sie jedoch eine vollständige Desktop-Umgebung wie GNOME verwenden,xdg-open
fungiert diese als einfache Weiterleitung und leitet die Dateianforderungen an Ihr DE weiter, das diese dann nach Belieben bearbeiten kann (siehe andere Antworten für GNOME und Nautilus, zum Beispiel). .... was Sie zu den anderen Antworten in diesem Fall zurückbringt. Trotzdem, da dies Unix & Linux ist und nicht Ask Ubuntu:
Alles in allem:
Im ersten Fall müssen Sie die Konfiguration
xdg-open
direkt mit demxdg-mime
Befehl vornehmen (mit dem Sie auch sehen können, welche Anwendung mit welcher Datei umgehen soll). Im zweiten Fall ...... müssen Sie den Dateiöffner konfigurieren, der Ihrer Desktop-Umgebung zugeordnet ist. In einigen Fällen wird die durchgeführte Konfiguration
xdg-mime
möglicherweise an das richtige Konfigurationstool in Ihrer Umgebung weitergeleitet.quelle
xdg-open
ist nur eine dieser Komponenten, die versuchen, beide Enden zusammenzubringen.Aus dem Wiki- Eintrag,
Auch diese Antwort hat weitere Details.
Aus dieser Antwort sehe ich die folgenden Informationen.
quelle
Eine Datei teilt dem Betriebssystem nicht das Dateiformat mit, mit einer Ausnahme:
Beginnt eine ausführbare Datei mit einer sogenannten Shebang-Zeile, wie z
Dann teilt diese Zeile dem Linux-Kernel mit, mit welchem Programm er gestartet werden soll
/usr/bin/perl
(das heißt, anstatt diese Datei auszuführen, sollte er diese Datei ausführenusr/bin/perl
und als Argument angeben). Dies funktioniert natürlich nur mit Dateiformaten, die eine solche Shebang-Zeile ignorieren (oder verstehen).Ansonsten kennt das Betriebssystem als solches die Dateitypen nicht. Viele Programme, die das Öffnen anderer Dateien ermöglichen, haben jedoch einen eigenen Mechanismus, mit dem sie entscheiden können, welches Programm zum Öffnen welcher Datei verwendet werden soll. Dies kann eine Liste im Programm selbst sein (Firefox verwaltet beispielsweise eine solche Liste), oder das Programm kann sie an die Desktop-Umgebung delegieren (von denen es mehrere für Linux gibt).
Normalerweise berücksichtigen diese Mechanismen nur den Dateinamen, um den Dateityp zu bestimmen. Eine Ausnahme bilden E-Mail-Clients und Webbrowser, bei denen der Dateityp in der Regel explizit vom Server angegeben wird.
Der Mechanismus ist normalerweise zweistufig:
quelle
gnome-open
. Ich bin sicher, dass es ähnliche Befehlszeilentools für die anderen Desktopumgebungen gibt. Bearbeiten: Ich stelle nur fest, dass John WH Smith einen Befehl gibt, der von Ihrer Desktop-Umgebung unabhängig ist.Es ist ähnlich wie bei MS-Windows gemacht.
Es wird nicht vom Betriebssystem ausgeführt. Dies geschieht über den Dateimanager, der Teil des Fenstersystems ist. Normalerweise wird der Teil des Dateinamens nach dem letzten Punkt
.
verwendet, um die Entscheidung zu treffen. Es gibt eine Möglichkeit, sie in den Einstellungen festzulegen oder wenn Sie mit der rechten Maustaste auf eine Datei klicken.Die Datei teilt dem Betriebssystem also nicht mit, die Datei ist nicht aktiv, kann also nichts für sich tun, aber der Dateimanager prüft den Dateinamen, der Dateimanager könnte ebenso wie das
file
Dienstprogramm in die Datei schauen .quelle
shell32!ShellExecute()
, und obwohl shell32 Teil von Windows Shell ist, ist es nicht Teil von Windows Explorer, dem Standarddateimanager.Wie @richard sagt, ähnelt es Windows. Ein generischer Dateimanager kann zuerst nach dem Namen einer Datei suchen und versuchen, eine Dateierweiterung zu erkennen, die einem Programm zugeordnet ist. Wenn dies fehlschlägt, wird möglicherweise versucht, die Datei zu öffnen und nach einem Header zu suchen. Wenn Sie versuchen, eine Nicht-Textdatei (z. B. eine JPEG-Datei) zu lesen, wird eine Datenfolge angezeigt, die die Datei beschreibt. Dies ist zum Beispiel die erste Zeile eines .jpeg, die ich herumliegen hatte:
'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff\xfe\x00;CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), quality = 90'
quelle
file.png
,file.gif
wird der Bildbetrachter weiterhin durch Umbenennen der PNG-Datei in geöffnet. Und wenn Sie die Datei leeren, wird sie im Texteditor geöffnet.Ich werde versuchen, eine grundlegende Antwort darauf zu geben, wie Unix-Systeme mit Dateien umgehen. Wie andere bereits betont haben, ist Ihre Formulierung der Frage irreführend, da die Dateien selbst nicht angeben, um welchen Typ es sich handelt, und der Kernel selbst nicht entscheidet, welche Anwendungen verwendet werden sollen.
In Unix- und Windows-Betriebssystemen werden Dateien einfach als Folge von Bytes strukturiert. Aus Tanenbaums Betriebssystemen , dritte Ausgabe:
Aus diesem Grund werden in einer Desktop-Umgebung
xdg-open
Standardanwendungen zum Öffnen bestimmter Dateitypen festgelegt.Auf einem Unix-System werden Dateien zwischen regulären Dateien und speziellen Dateien unterschieden . Eine reguläre Datei besteht lediglich aus Benutzerdaten, die entweder eine Textdatei (ASCII- oder Unicode-Codierung) oder eine Binärdatei (ausführbarer Code) sein können. Spezielle Dateien sind Dateien, die zum Ausführen des Betriebssystems erforderlich sind. Dazu gehören Verzeichnisse, Links, Pipes, Sockets und Gerätedateien. ¹
Es ist üblich, dass Dateinamen Erweiterungen enthalten, die angeben, um welchen Dateityp es sich handelt , z. B. * .c für C-Quellcode, * .html für Webseiten usw. Von Tanenbaum:
Wenn eine Datei ohne die richtige Erweiterung gespeichert oder umbenannt wird, behält sie weiterhin das gleiche Format für diesen Dateityp bei. Auf diese Weise entscheiden die meisten Dateimanager, mit welchen Anwendungen Dateien geöffnet werden sollen, und warum der Benutzer ohne die Erweiterung most die Meldung "Wählen Sie das Programm aus, mit dem Sie diese Datei öffnen möchten:" erhält.
Zuletzt werden Umgebungsvariablen verwendet, um systemweite Einstellungen und Einstellungen auf Benutzerebene zu definieren. Zum Beispiel wird die Variable
EDITOR
wird verwendet , um festzulegen , welche Texteditor zu öffnen , wenn Text zB Handhabungvim
,nano
etc. Dies ist , wie Prozesse wissen , welchen Editor zu öffnen, wie bei der Bearbeitung einergit
Nachricht zu begehen. Andernfalls ist es richtig, dass Sie angeben müssen, welche Anwendung verwendet werden soll. Beachten Sie, dassvim
Dateitypen durch Überprüfen der Erweiterungen und Überprüfen des Dateiinhalts erkannt werden, wenn die Einstellung festgelegtfiletype on
ist, wodurch die korrekte Syntaxhervorhebung, Einrückung usw. angewendet wirdTL; DR
Zusammenfassend gesagt bestimmen die Anwendungen auf Benutzerebene, mit welchen Programmen ein bestimmter Dateityp geöffnet werden soll, und nicht das Betriebssystem.
quelle