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

25

Parfois, il est logique 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 vous partagiez ces répertoires avec un utilisateur Windows?

Merci!

    
posée Hamid 30.01.2014 - 17:34
la source

5 réponses

34

Pour autant que je sache, l'attribution de noms aux dossiers et aux 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 Magic Numbers 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 modifié. Voir Forcer Nautilus à 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. Lorsque 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 vous aidera.

    
réponse donnée user68186 30.01.2014 - 17:44
la source
10

La réponse courte

  • Windows n'autorise pas les caractères suivants: <>:"/\|?* ( source )
  • Les autres caractères déconseillés sont: space et dot . ( 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 grep ). 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 utilisée pour la détection du type de fichier.
  • Windows n'autorisera pas non plus les noms de fichiers CON , PRN , AUX , CLOCK$ , NUL COM1 , COM2 , COM3 , COM4 , COM5 , COM6 , COM7 , COM8 , COM9 LPT1 , 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 connaisse sont / et null (l'octet null, ext4 ).
  • Voir aussi: Limites du système de fichiers (je ne sais pas à quel Windows vous souhaitez être compatible) .

La réponse longue

Contexte technique: Système de fichiers

Ubuntu utilise le système de fichiers / . Un système de fichiers suit où les fichiers sont stockés sur le stockage sous-jacent (disque ou SSD ou autre), des autorisations sous la forme propriétaire / groupe / autre peuvent être lues / écrites / exécutées, horodatages, 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 mentionnées ci-dessus.

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

  • fichier normal
  • répertoire
  • fichier de périphérique (bloc ou caractère du 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 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 .txt 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 les extensions de fichier pour détecter les types de fichier
  • Linux utilise "Magic Bytes" pour détecter les types de fichiers. Les octets magiques 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 en tant que un exemple). Il utilise également les extensions de nom de fichier pour les fichiers avec les mêmes octets magiques tels que .html ou %code% (les deux sont des fichiers texte).

Connexes

réponse donnée Martin Thoma 06.02.2014 - 21:21
la source
5

Par souci d'exhaustivité, les noms composés 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 .. .

    
réponse donnée Sergey 04.02.2014 - 22:55
la source
1

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

Il est courant d’avoir un dossier nommé "program.d" - pour enregistrer la configuration et les éléments d’un programme (consultez le répertoire / etc)

    
réponse donnée Ohad Cohen 30.01.2014 - 17:47
la source
0

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 avoir est un caractère null ou celui contenant 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 caractères " * : < > ? \ / | (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 de fichier , je pense que cela devrait aller, car cela ne semble pas être 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 étant le séparateur d'extension dans VMS, MS-DOS et Windows), comme indiqué dans le lien Wikipedia qui suit:

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é.

    
réponse donnée precise 08.02.2014 - 10:57
la source

Lire d'autres questions sur les étiquettes