Si un fichier indique au système d'exploitation son format, comment le système d'exploitation choisit-il l'application à ouvrir par défaut?
Dans Windows, l’association est-elle stockée dans la table de registre?
Comment Linux choisit-il quelle application ouvrir un fichier?
J'utilisais beaucoup Nautilus, mais maintenant je change de terminal. Est-il vrai qu'en terminal, nous devons toujours spécifier explicitement quelle application ouvrir un fichier? Est-ce que les paramètres de quelle application pour ouvrir un fichier d'un certain format par défaut appartiennent au gestionnaire de fichiers (par exemple, Nautilus), et ce n'est pas un problème lorsque nous vivons dans des terminaux?
Réponses:
Il peut y avoir différents mécanismes pour gérer ces paramètres par défaut. Cependant, les autres réponses ont tendance à viser des environnements de bureau complets, chacun avec son propre mécanisme. Cependant, ils ne sont pas toujours installés sur un système (j'utilise beaucoup OpenBox), et dans ce cas, des outils tels que ceux
xdg-open
utilisés peuvent être utilisés.Citant le Wiki Arch :
En ce moment, j'utilise Ubuntu (12.04) et
xdg-open
est disponible. Cependant, lorsque vous utilisez un environnement de bureau complet tel que GNOME,xdg-open
agit comme un simple redirecteur et relaie les demandes de fichier à votre DE, qui est ensuite libre de le gérer à sa guise (voir d'autres réponses pour GNOME et Nautilus, par exemple). .... ce qui vous ramène aux autres réponses dans ce cas. Cependant, étant donné qu’il s’agit de Unix et Linux, demandez plutôt à Ubuntu:
En tout:
Dans le premier cas, vous devrez configurer
xdg-open
directement , à l'aide de laxdg-mime
commande (qui vous permettra également de voir quelle application est supposée gérer quel fichier). Dans le second cas ...... vous devez configurer l'ouvre-fichier associé à votre environnement de bureau. Dans certains cas, la configuration effectuée
xdg-mime
peut être redirigée vers l'outil de configuration approprié dans votre environnement.la source
xdg-open
est juste un de ces composants qui essayent de réunir les deux bouts.De l' entrée du wiki ,
En outre, cette réponse a plus de détails.
De cette réponse, je vois les informations ci-dessous.
la source
Un fichier n'indique pas le format de fichier du système d'exploitation, à une exception près:
Si un fichier exécutable commence par une ligne dite shebang, comme
alors cette ligne indique au noyau Linux avec lequel il doit être démarré
/usr/bin/perl
(c'est-à-dire qu'au lieu d'exécuter ce fichier, il devrait s'exécuterusr/bin/perl
et donner ce fichier en argument). Ceci ne fonctionne bien entendu qu'avec les formats de fichiers qui ignorent (ou comprennent) une telle ligne shebang.Autre que cela, le système d'exploitation en tant que tel ne sait rien sur les types de fichiers. Cependant, beaucoup de programmes qui permettent d'ouvrir d'autres fichiers ont leur propre mécanisme pour décider quel programme utiliser pour ouvrir quel fichier. Cela peut être une liste dans le programme lui-même (Firefox, par exemple, maintient une telle liste), ou le programme peut la déléguer à l'environnement de bureau (il en existe plusieurs pour Linux).
Généralement, ces mécanismes ne considèrent que le nom de fichier pour décider du type de fichier; les clients de messagerie et les navigateurs Web constituent une exception, le type de fichier étant généralement indiqué explicitement par le serveur / indiqué dans le courrier.
Le mécanisme est généralement en deux étapes:
la source
gnome-open
. Je suis sûr qu'il existe des outils de ligne de commande similaires pour les autres environnements de bureau. Edit: Je viens de noter que John WH Smith donne une commande indépendante de votre environnement de bureau.C'est similaire à MS-Windows.
Ce n'est pas fait par OS. C'est fait par le gestionnaire de fichiers, une partie du système de fenêtrage. Habituellement, la partie du nom de fichier après le dernier point
.
est utilisée pour prendre la décision. Il existe un moyen de les définir dans les paramètres ou lorsque vous cliquez avec le bouton droit sur un fichier.Ainsi, le fichier ne dit pas au système d'exploitation, le fichier n'est pas actif et ne peut donc rien faire par lui-même, mais le gestionnaire de fichiers examine le nom du fichier. Le gestionnaire de fichiers peut également examiner l'intérieur du fichier de la même manière que l'
file
utilitaire.la source
shell32!ShellExecute()
, et bien que shell32 fasse partie de Windows Shell, il ne fait pas partie de l'explorateur Windows, qui est le gestionnaire de fichiers par défaut.Comme @richard le dit, c'est similaire à Windows. Un gestionnaire de fichiers générique peut d'abord examiner le nom d'un fichier et essayer de reconnaître une extension de fichier associée à un programme. Si cela échoue, il peut essayer d'ouvrir le fichier et rechercher un en-tête. Si vous essayez de lire un fichier non-texte (par exemple, un fichier .jpeg), vous verrez une chaîne de données décrivant le fichier. Par exemple, c’est la première ligne d’un fichier .jpeg que j’ai traîné:
'\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'
la source
file.png
fichier PNG avec visionneuse d'images, le fait de renommer le fichier PNG pourfile.gif
ouvrir la visionneuse d'images. Et si vous videz le fichier, il s'ouvrira dans l'éditeur de texte.Je vais tenter de donner une réponse sous-jacente sur la façon dont les systèmes Unix traitent les fichiers. Comme d'autres l'ont souligné, votre formulation de la question est trompeuse, car les fichiers eux-mêmes ne signalent pas leur type et le noyau lui-même ne décide pas des applications à utiliser.
Dans les systèmes d'exploitation Unix et Windows, les fichiers sont structurés simplement comme une séquence d'octets. De Tanenbaum's Operating Systems , troisième édition:
C’est pourquoi, dans un environnement de bureau,
xdg-open
est utilisé pour déterminer les applications par défaut permettant d'ouvrir des types de fichiers spécifiques.Sur un système Unix, les fichiers sont différenciés entre fichiers normaux et fichiers spéciaux . Un fichier normal est simplement une donnée utilisateur qui peut être un fichier texte (encodage ASCII ou Unicode) ou binaire (code exécutable). Les fichiers spéciaux sont des fichiers indispensables à l'exécution du système d'exploitation. Ceux-ci incluent des répertoires, des liens, des tubes, des sockets et des fichiers de périphérique.¹
C’est par convention que les noms de fichier contiennent des extensions indiquant le type de fichier qu’ils peuvent être, par exemple * .c pour le code source C, * .html pour les pages Web, etc. De Tanenbaum:
Si un fichier est enregistré ou renommé sans l’extension appropriée, il conserve le même format pour ce type de fichier. C’est ainsi que la plupart des gestionnaires de fichiers décident avec quelles applications ouvrir les fichiers et pourquoi, sans extension, l’utilisateur sera invité à choisir "Choisissez le programme que vous souhaitez utiliser pour ouvrir ce fichier:".
Enfin, les variables d’environnement permettent de définir des paramètres au niveau du système et de l’utilisateur. Par exemple, la variable
EDITOR
est utilisée pour spécifier l'éditeur de texte pour ouvrir lors de la manipulation par exemple du textevim
,nano
etc. Voici comment les processus savent quel éditeur ouvert, comme lors de l' édition d' ungit
message de validation. Sinon, vous avez raison de préciser quelle application utiliser. Notez quevim
les types de fichier sont détectés en vérifiant les extensions et en inspectant le contenu du fichier, si le paramètrefiletype on
est défini, ce qui applique ensuite la coloration syntaxique correcte, l'indentation, etc. ²TL; DR
En résumé, ce sont les applications de niveau utilisateur qui déterminent les programmes avec lesquels ouvrir un type de fichier spécifique, et non le système d'exploitation lui-même.
la source