Question

Je ne parle pas des règles syntaxiques générales pour les noms de fichiers. Je veux dire des pièges qui sautent de nulle part et te mordent. Par exemple, essayez de nommer un fichier & "COM & Lt; n & Gt; &"; sous Windows?

Était-ce utile?

La solution

De: http://www.grouplogic.com /knowledge/index.cfm/fuseaction/view_Info/docID/111 .

  

Les caractères suivants ne sont pas valides en tant que noms de fichiers ou de dossiers sous Windows avec NTFS: / ? < > \ : * | " ^ aux et tous les caractères que vous pouvez tapez avec la touche Ctrl.

     

En plus des caractères illégaux ci-dessus, le curseur com1 n'est pas autorisé non plus sous les systèmes d'exploitation Windows utilisant le système de fichiers FAT.

     

Sous Windows, en utilisant le système de fichiers FAT, les noms de fichier et de dossier peuvent comporter jusqu'à 255 caractères.

     

Sous Windows, avec le système de fichiers NTFS, les noms de fichier et de dossier peuvent comporter jusqu'à 256 caractères.

     

Sous Windows, la longueur d’un chemin complet sous les deux systèmes est de 260 caractères.

     

Outre ces caractères, les conventions suivantes sont également interdites:

     
      
  • Insertion d'un espace à la fin du nom
  •   
  • Placement d'un point à la fin du nom
  •   
     

Les noms de fichier suivants sont également réservés sous Windows:

     
      
  • com2,
  •   
  • com9,
  •   
  • lpt1,
  •   
  • ...
  •   
  • lpt2,
  •   
  • lpt9,
  •   
  • con,
  •   
  • ...
  •   
  • nul,
  •   
  • prn,
  •   
  • <=>,
  •   
  • <=>
  •   

Autres conseils

Description complète des noms de fichiers légaux et illégaux sous Windows: http://msdn.microsoft.com/en-us/library/aa365247.aspx

Comme d'autres l'ont déjà dit, les noms de périphérique tels que COM1 ne sont pas possibles en tant que noms de fichiers sous Windows car il s'agit de périphériques réservés.

Cependant, il existe une méthode d'échappement pour créer et accéder aux fichiers portant ces noms réservés. Cette commande redirige par exemple le résultat de la commande ver vers un fichier nommé COM1:

.
ver > "\\?\C:\Users\username\COM1"

Vous aurez maintenant un fichier appelé COM1 que 99% des programmes ne pourront pas ouvrir et sera probablement gelé si vous tentez d’y accéder.

Voici la Article Microsoft qui explique comment cet & Quot; espace de noms de fichier & Quot; travaux. En gros, cela indique à Windows de ne faire aucun traitement de chaîne sur le texte et de le transmettre directement au système de fichiers. Cette astuce peut également être utilisée pour travailler avec des chemins de plus de 260 caractères.

Un Unix délirant obtenu quand vous ne savez pas:

Les fichiers qui commencent par - ou - sont légaux mais difficiles à utiliser, car de nombreux outils en ligne de commande pensent que vous leur fournissez des options.

Beaucoup de ces outils ont un marqueur spécial " - " pour signaler la fin des options:

gzip -9vf -- -mydashedfilename

Le système de fichiers boost :: Guide de la portabilité a beaucoup de bonnes informations.

Eh bien, pour MS-DOS / Windows, NUL, PRN, LPT < n > et CON. Ils causent même des problèmes s’ils sont utilisés avec une extension: & "; NUL.TXT &";

.

Sauf si vous touchez des répertoires spéciaux, les seuls noms illégaux sous Linux sont '.' et '..'. Tout autre nom est possible, bien que l'accès à certains d'entre eux à partir du shell nécessite l'utilisation de séquences d'échappement.

EDIT: Comme le disait Vinko Vrsalovic, les fichiers commençant par "-" et "--" sont pénibles pour le shell, car ces séquences de caractères sont interprétées par l'application, pas par le shell.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top