web-dev-qa-db-fra.com

Est-ce une mauvaise pratique que le nom de dossier contienne un point (.)? Que diriez-vous du nom de fichier avec plusieurs points?

Parfois, il est pratique qu'un nom de dossier contienne un point (.). Par exemple, vous stockez des données pour une expérience effectuée à L = 0.5. Donc, le dossier peut être nommé:

experiment_L0.5

Un problème similaire peut survenir pour les noms de fichiers. Par exemple:

file_L0.5.txt

Travailler sous Ubuntu, est-ce une mauvaise pratique? Et si partager ces répertoires avec un utilisateur Windows?

Merci!

25
Hamid

Autant que je sache, le nommage de dossiers et de fichiers avec un ou plusieurs points ne pose aucun problème.

Ubuntu n'utilise généralement pas le point et trois caractères (tels que .txt) pour identifier le type de fichier. Cela n’a donc aucune signification particulière dans le contexte Ubuntu. Ceci est utile lors du partage de fichiers avec Windows. Ubuntu utilise des nombres magiques dans les premiers octets du fichier pour identifier le type de fichier. Cependant, Nautilus. ignore les nombres magiques si l'extension avec des points et trois caractères est disponible pour identifier le type de fichier. Ce paramètre peut être changé. Voir Force nautile à ignorer les extensions

Dans Ubuntu, le fait de commencer un fichier ou un dossier avec un point, tel que .experiment_L0.5, rend le fichier ou le dossier masqué. Vous pouvez basculer l'affichage des fichiers cachés en appuyant sur Ctrl+H dans Nautilus. Sous Windows, un nom de fichier commençant par a. n'est pas caché. Donc, si vous transférez un fichier caché nommé .experiment_L0.5 dans un système Windows, il sera clairement visible.

Dans Ubuntu, un nom de fichier peut se terminer par un point car il n’a pas de signification particulière placée à la fin. Cependant, sous Windows, un point sépare le nom du fichier et son extension, et un nom de fichier se terminant par un point, mais aucune extension n'est autorisée. Quand j'ai essayé de créer un tel fichier sous Windows, j'ai eu un fichier avec juste le nom, pas de point, pas d'extension.

Référence: Wiki sur les noms de fichiers

J'espère que cela t'aides.

35
user68186

La réponse courte

  • Windows n'autorise pas les caractères suivants: <>:"/\|?* ( source )
  • Les autres caractères déconseillés sont les suivants: espace et point . ( source )
    • Les outils de ligne de commande sont plus difficiles à utiliser lorsque les noms comportent des espaces (plus difficile, pas impossible)
    • Les points sont utilisés dans RegEx (par exemple, lorsque vous souhaitez utiliser grepname__). Un point en tête rend un fichier caché par convention sous Linux. Sous Windows, les points sont utilisés dans l'extension de fichier, qui est utilisée pour la détection du type de fichier.
  • Windows ne permet pas également les noms de fichiers CONname__, PRNname__, AUXname__, CLOCK$, NULCOM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 et LPT9 . ( source )
  • Les seuls caractères non autorisés dans les systèmes de fichiers Unix que je connais sont / et null (l'octet null, \0).
  • Voir aussi: Limites du système de fichiers (Je ne sais pas à quel Windows vous souhaitez être compatible).

La longue réponse

Contexte technique: Système de fichiers

Ubuntu utilise le système de fichiers ext4 . Un système de fichiers suit où les fichiers sont stockés sur le stockage sous-jacent (disque ou SSD ou autre), les autorisations sous la forme propriétaire/groupe/autre peuvent lire/écrire/exécuter, horodatage, nom.

Le système de fichiers structure le stockage disponible. Le premier bloc s'appelle le "superbloc". Ce bloc est utilisé pour monter un système de fichiers. Autant que je sache, chaque système de fichiers moderne divise son espace en blocs. Je pense (et je n'en suis pas trop sûr) que la plupart des systèmes de fichiers ont également une taille de bloc fixe, bien que la taille de bloc puisse être configurée lors de la création du système de fichiers. ext4 (et aussi ext2 et ext3) utilisent ce qu'on appelle des "inodes" pour les fichiers et les répertoires. Ces inodes contiennent des pointeurs vers d'autres blocs (pouvant également être des inodes ou des "blocs de données"). Et le "premier" inode d'un fichier contient toutes les informations que j'ai mentionnées ci-dessus.

Une autre information est le "type" du fichier. "Type" peut être:

  • dossier régulier
  • annuaire
  • fichier de périphérique (bloc ou caractère de périphérique)
  • ...

En fait, vous pouvez également ouvrir des répertoires avec un éditeur:

vim /home

Comme le répertoire ne contient pas le chemin d'accès complet, mais uniquement les noms du contenu, je ne vois pas pourquoi les fichiers ne pourraient pas contenir un /. Je suppose que cela pourrait être la commodité. (Quelqu'un sait-il pourquoi / n'est pas autorisé?)

Cependant, les choses sont différentes pour les autres systèmes de fichiers. Les systèmes FAT16 et FAT32 utilisaient une "table d'allocation de fichiers". Cela signifie qu'il existe une table contenant tous les fichiers stockés dans votre fichier, à quel "cluster" ils commencent et à quel cluster ils se terminent en tant que liste chaînée.

Ce que je voulais vous dire, c'est que les caractères non autorisés peuvent également dépendre du système de fichiers.

Contexte technique: Types de fichiers

  • Windows utilise des extensions de fichier pour détecter les types de fichiers
  • Linux utilise "Magic Bytes" pour détecter les types de fichiers. Magic Bytes font partie du contenu du fichier et sont donc complètement indépendants du nom. Ces octets font partie de la spécification du type de fichier (voir spécification png à titre d'exemple). Il utilise également les extensions de nom de fichier pour les fichiers avec les mêmes octets magiques tels que .txt ou .html (les deux sont des fichiers texte).

En relation

11
Martin Thoma

Par souci d'exhaustivité, les noms composés uniquement d'un seul point . ou de deux points .. sont spéciaux:

  • . fait référence au répertoire en cours
  • .. fait référence au répertoire parent

Ces entrées sont ajoutées automatiquement et existent toujours, vous ne pouvez donc pas avoir un fichier nommé . ou ...

5
Sergey

Cela n'a pas d'importance, ni sous Linux ni dans Windows.

C'est une pratique courante d'avoir un dossier nommé "program.d" - pour enregistrer la configuration et les éléments d'un programme (regardez dans le répertoire/etc)

1
Ohad Cohen

La dénomination de fichier est très flexible dans les systèmes de fichiers Unix et Linux. Le seul nom de fichier que vous ne pouvez pas utiliser est un caractère null ou celui qui contient un / dans son nom. Mais il serait sûrement une bonne pratique d'éviter d'utiliser les caractères interdits/réservés dans d'autres systèmes du point de vue de la portabilité du nom; Par exemple, vous ne devriez utiliser aucun des " * : < > ? \ / | (restreint par NTFS) dans votre nom de fichier si vous souhaitez accéder au fichier dans un système Windows.

Et sur l'utilisation d'un . (point) dans le nom du fichier , je pense que cela devrait aller, car il ne semble pas que ce soit un "réservé" caractère dans n’importe quel système (sauf OpenVMS, MS-DOS et Windows où son utilisation dans le nom du fichier/répertoire est autorisée mais la dernière occurrence sera interprétée comme le séparateur d’extensions dans VMS, MS-DOS et Windows), comme indiqué dans le lien Wikipedia suivant:

Dans d'autres systèmes, généralement considérés comme faisant partie du nom de fichier, plusieurs périodes peuvent être autorisées. Sous Unix, une période de début signifie que le fichier ou le dossier est normalement masqué.

0
precise