Est - il exact d'utiliser certains caractères spéciaux, comme +
, &
, '
, .
(point) et ,
(virgule), essentiellement, dans les noms de fichiers.
Je comprends que vous pouvez utiliser -
et _
sans problème, mais en faisant des recherches, je n'ai pas pu trouver quelque chose de précis sur les autres symboles; certains disent que vous pouvez, certains disent que vous ne pouvez pas, et d'autres disent qu'il n'est "pas encouragé" de les utiliser (quoi que cela signifie).
filenames
unix-philosophy
Chris Klein
la source
la source
Réponses:
Oui.
Correct mais pas nécessairement recommandé ou pratique.
Vous pouvez utiliser n'importe quel caractère à l'exception de null et
/
dans un nom de fichier dans les systèmes de fichiers Unix et Linux modernes.Vous pouvez utiliser la ponctuation ASCII . Certains utilitaires utilisent des arrêts ( point ) et des virgules dans les noms des fichiers qu'ils créent.
Vous pouvez utiliser des caractères de contrôle ASCII , mais cela est déconseillé car ils sont peu susceptibles d'être affichés de manière acceptable et sont difficiles à utiliser.
Vous pouvez utiliser des métacaractères shell tels que l'esperluette ASCII et l'apostrophe ASCII. Cependant, cela n'est pas pratique et nécessite que lors de la construction de commandes, vous fassiez particulièrement attention à citer ou à échapper de tels caractères.
Vous pouvez utiliser des caractères multi-octets à l' aide d'une variété d'encodages. Il appartient au shell et / ou aux utilitaires d'interpréter et d'afficher correctement les caractères non ASCII. Il est conseillé de vous limiter à un encodage populaire tel que UTF-8 et de définir les paramètres régionaux de manière appropriée.
Vous aurez le moins de problèmes à utiliser des caractères imprimables ASCII, limitant le jeu de caractères de ponctuation à ceux qui ne sont pas des méta-caractères shell et ne commençant pas un nom par un trait d'union (ou un arrêt - sauf si vous souhaitez masquer le fichier).
la source
Comme les autres l'ont indiqué, sur les systèmes Unix / Linux modernes, les noms de fichiers peuvent contenir n'importe quel caractère à l'exception de
\0
(NUL) et/
(barre oblique).En plus de cela, la norme POSIX définit un jeu de caractères portable pour les noms de fichiers:
L'
pathchk
utilitaire de GNU Coreutils vérifie cela lorsqu'il est appelé avec l'-p
option, et l'-P
option avertira des noms de fichiers vides (qui ne sont pas valides mais peuvent être passés en argumentpathchk
) et des noms de fichiers commençant par un trait d'union (-
).la source
Le pari le plus sûr est de se référer à l'entrée wikipedia pour le jeu de caractères autorisé pour tout système d'exploitation. Il peut être trouvé à partir d' ici .
Par exemple, pour la plupart des systèmes basés sur Unix, le jeu de caractères autorisé est un jeu de 8 bits et le caractère réservé est le caractère nul (NUL,
'\0'
). Cependant, ce n'est pas une bonne pratique d'utiliser les caractères spéciaux dans les noms de fichiers car ils posent un problème lors de leur suppression.Par exemple, je peux avoir un nom de fichier comme
-ramesh.txt
et j'essaye de le supprimer comme ci-dessous.J'ai besoin de supprimer le fichier car,
Vous trouverez également plus de détails sur cette réponse .
Donc, pour conclure, le problème n'est pas d'utiliser les caractères spéciaux pour les noms de fichiers mais de savoir comment les gérer.
la source
-
mais juste pour être précis: 1) vous n'avez certainement pas besoin des guillemets autour de ce nom de fichier, 2) au lieu d'utiliser l'--
argument spécial , vous pouvez faire exactement ce querm
suggère lui-même:,rm ./-ramesh.txt
donc vous n'avez pas besoin de le faire exactement comme vous le suggérez.Votre recherche a presque raison. Il est possible d'utiliser des caractères spéciaux dans les noms de fichiers, mais ce n'est pas conseillé car ces caractères ont une signification particulière. Les conventions de dénomination des fichiers sous Linux décrivent également d'autres restrictions sur les noms de fichiers, telles que «Les noms de fichiers ne doivent jamais commencer par un trait d'union».
Exemple simple d'exécution d'opérations en ligne de commande avec des caractères spéciaux dans les noms de fichiers.
À titre personnel, je préfère éviter les caractères spéciaux dans les noms de fichiers car ils nécessitent une attention particulière lorsque ces fichiers sont utilisés pour tout traitement. Ainsi, supprimant le souci de traiter les caractères spéciaux du processus de développement.
la source
-
,_
et.
(point) dans les noms de fichiers?