Quelle extension utiliser pour les fichiers texte? (Unix / Linux)

20

J'ai remarqué que je peux très bien lire les fichiers texte sans extension .txt. Comment venir? Dois-je enregistrer ces fichiers avec ou sans l' .txtextension?

Et les .inifichiers? Je les utilise généralement comme ceci: config.inidois-je supprimer l'extension ici pour?

Toutes les ressources générales sur la façon dont Linux gère les extensions de fichiers seraient utiles.

jcora
la source

Réponses:

37

UNIX / Linux n'a pas le même héritage DOS / CP / M ancien que Windows. Les extensions sont donc généralement moins importantes pour la plupart des utilitaires et outils UNIX.

J'utilise généralement un environnement en ligne de commande uniquement. Les extensions dans un tel environnement sous Linux ne sont vraiment significatives que pour la commodité de l'opérateur ou de l'utilisateur. (Je n'ai pas assez d'expérience avec KDE ou GNOME pour savoir comment leurs gestionnaires de fichiers traitent les extensions.)

Mais une telle commodité est généralement importante. Si config.iniest vraiment au format ".ini" standard de Microsoft, je laisserais l'extension se tenir. Les anciens fichiers texte simples ne portent généralement pas d'extension sous Linux, mais ce n'est pas universel pour tous les fichiers de configuration des programmes. Le programmeur décide généralement de cela.

Je pense que ".txt" est utile sous Linux si vous voulez souligner qu'il ne s'agit PAS d'un fichier de configuration ou d'un autre document lisible par machine. Cependant, dans les distributions sources, la convention est de nommer ces fichiers tous les majuscules sans extension (c'est-à-dire README, INSTALL, COPYING, etc.)

Il existe certaines normes et conventions, mais rien ne vous empêche de nommer quoi que ce soit, sauf si vous partagez des choses avec d'autres.

Sous Windows, nommer un fichier .exeindique au shell (généralement explorer.exe) qu'il s'agit d'un fichier exécutable. UNIX intègre ces connaissances dans les autorisations du système de fichiers. Si les bons xbits (voir man chmod) sont définis, il est reconnu comme exécutable par les shells et les fonctions du noyau (je crois). Au-delà de cela, Linux s'en fiche, la plupart des shells s'en moquent, et la plupart des programmes regardent dans le fichier pour trouver son "type".

Bien sûr, il y a la belle commande filequi peut analyser le fichier et vous dire avec certitude ce que c'est. Je crois que s'il ne peut pas faire correspondre les données du fichier avec n'importe quel type connu, et s'il ne contient que des caractères ASCII / Unicode imprimables, il suppose qu'il s'agit d'un fichier texte.


@Bruce Ediger ci-dessous est absolument correct. Il n'y a rien au niveau du noyau ou du système de fichiers, c'est-à-dire Linux lui-même, imposant ou prenant en charge que le contenu d'un fichier doit correspondre à son nom, ou au programme qui est censé le comprendre. Cela ne signifie pas qu'il n'est pas possible de créer un utilitaire shell ou lanceur pour faire des choses en fonction du nom de fichier.

LawrenceC
la source
7
Il est également utile si vous travaillez beaucoup dans la console, car les fichiers bien nommés sont plus faciles à différencier des autres grâce à la globalisation.
lynxlynxlynx
9
Vous devez souligner que les noms de fichiers Linux n'ont pas "d'extensions" - la partie ".txt" d'un nom de fichier qui le contient n'est qu'une sous-chaîne. Vous devez également souligner que l'organisation des fichiers internes (chaînes terminées LF, chaînes terminées CR-LF, enregistrements de taille fixe, etc.) n'est même pas faiblement liée au nom, ni l '"application" qui connaît le fichier qui lui est lié par son nom. .
Bruce Ediger
2
Je pense que seules les entrées du répertoire FAT16 8.3 sous DOS avaient un champ séparé de 3 octets pour l'extension. FAT32 a conservé le champ 8.3 pour des raisons de compatibilité, mais le véritable "nom de fichier long" est une chaîne sans champ d'extension distinct, divisée en plusieurs entrées de répertoire ( fandecheng.com/personal/interests/ewindows/nuhelp/lfnspec.htm )
LawrenceC
23

Contrairement à Windows, dans les systèmes UNIX, le type de fichier n'est pas déterminé par l'extension. L'extension de fichier est et était simplement un indicateur visuel pour les humains. Vous pouvez nommer un fichier foo.c JPEG et l'ouvrir dans Gimp. Un autre contraste avec Windows est que sur les systèmes UNIX, vous devez utiliser l'intégralité du nom de fichier, tandis que Windows s'en occupera souvent pour vous (par exemple, en exécutant simplement explorervs. explorer.exe). Sous UNIX foo.shdoit être appelé comme foo.sh, pas simplement foo.

Par convention, les gens ont tendance à utiliser un ensemble d'extensions commun. Cette pratique, bien qu'inutile, est probablement bénéfique pour l'humanité dans son ensemble.

bahamat
la source
7
+1 pourThis practice…is probably beneficial for humanity at large
Ulrich Dangel
Dommage que la diversité des emballages rend parfois la manipulation du mime difficile (par exemple dans KDE d'après mon expérience), bien que je ne sache pas pourquoi les programmes ne reculent pas sur la vérification de l'octet magique.
lynxlynxlynx
3
Parce qu'il n'y a pas d'octet "magique". C'est juste un raccourci pour "tous les types de fichiers connus qui sont raisonnablement bien documentés et suffisamment structurés pour être détectés de manière fiable avec un haut degré de certitude". Cela fonctionne très bien pour les fichiers texte ou conteneurs. Il échoue généralement lamentablement pour tous les types de données brutes ou inconnues.
bahamat
1
@bahamat Ce n'est pas un octet, mais il y a une partie du fichier traditionnellement appelée " numéro magique " qui est censée définir ce que contient le fichier. C'est ce que la filecommande regarde. ( #!est le nombre magique pour les scripts sh, par exemple)
Izkata
1
@lzkata à droite, comme je l'ai dit: "types de fichiers connus qui sont raisonnablement bien documentés et suffisamment structurés pour être détectés de manière fiable avec un haut degré de certitude".
bahamat
7

En général, j'ai trouvé très utile de conserver une convention de dénomination stricte et descriptive. Vous n'avez pas besoin de l'extension sous Unix, mais je la garderais pour deux raisons:

1) Si ce fichier est lu par une machine Windows, il sera plus facile de l'ouvrir que d'essayer de trouver "ouvrir avec ...".

2) Les extensions vous aident, l'utilisateur, à comprendre ce que fait le fichier. Dans notre laboratoire: .txt = fichier texte .sgi = binaire compilé irix .linux = binaire compilé linux

Si vous devez utiliser des machines Unix plus anciennes (nous utilisons toujours IRIX), gardez à l'esprit que le retour chariot est différent dans les machines * nix, et les programmes pourraient ne pas apprécier si vous essayez d'ouvrir un fichier avec des retours chariot Windows.

Lenz
la source
3

Il y a plusieurs bonnes réponses. J'aimerais répondre davantage à une partie de la question d'origine: "Toute ressource générale sur la façon dont Linux gère les extensions de fichier serait utile."

Il est possible d'enregistrer des extensions, afin que Linux ouvre toujours certaines extensions avec certains programmes. Cette fonction est appelée binfmt .

binfmt_misc est une capacité du noyau Linux qui permet de reconnaître et de transmettre des formats de fichiers exécutables arbitraires à certaines applications de l'espace utilisateur, telles que les émulateurs et les machines virtuelles. Les formats exécutables sont enregistrés via une interface de système de fichiers spéciale (similaire à / proc). Les distributions basées sur Debian fournissent la fonctionnalité via un paquet de support binfmt supplémentaire.

Chaque format a une entrée de fichier correspondante dans le répertoire / proc / sys / fs / binfmt_misc qui peut être lue pour obtenir des informations sur un format de fichier donné.

Pas maintenant
la source
-2

.txt peut être ouvert via différentes applications. mais l'important est qu'il est utilisé pour classer le fichier dans un certain type. Vous pouvez voir si nous enregistrons le même fichier en utilisant .html, le fichier tente d'ouvrir dans Internet Explorer. les applications sont faites en conséquence pour prendre en charge ces types de fichiers. Si vous utilisez .html ci-dessus, le compilateur essaie de trouver les attributs html et affiche le résultat en conséquence. idem avec les autres extensions. Le fichier .ini peut être lu comme du texte, mais l'extension le classe comme fichier de configuration et, par conséquent, le compilateur le traite comme un fichier de configuration et non comme un fichier texte ordinaire car le fichier texte n'est qu'un ensemble d'enregistrements et n'a pas de fonction spécifique comme celle de. ini. d'où vous ne voudriez pas changer l'extension de ini en texte

Sanjay Maharjan
la source
6
Cela peut être le cas sous Windows, mais (comme expliqué dans d'autres réponses), cela n'est pas pertinent dans les systèmes d'exploitation UN * X-ish.
Piskvor