OVH Cloud OVH Cloud

caractères autorisés dans les noms de fichiers

19 réponses
Avatar
Thomas
bonjour :-)


en fait, pour commencer,
est ce que la norme UNIX donne une liste de caractères autorisés dans
les noms de fichiers, et/ou une liste de caractères interdits ?

--
Téléassistance / Télémaintenance
http://www.portparallele.com/ThomasDECONTES/

9 réponses

1 2
Avatar
Thomas
In article <4d3fb8d1$0$8419$,
Éric Lévénez wrote:

Le 26/01/11 03:46, Thomas a écrit :

> j'ai posé cette question pour savoir quoi dire à celui qui gère
> dl.free.fr, qui interdit un tas de caractères quand on envoie les
> fichiers par ftp (dont notamment l'espace), et qui a indiqué (d'après
> mes souvenirs) être limité par des pbs de fs

FTP a ses propres limites en caractères spéciaux dans les noms des
fichiers, ceci indépendamment du système de fichier.



merci pour la précision :-)

du coup, même question : une liste de caractères interdits ?


(au moins, l'espace fait partie de ce qui est autorisé, non ?)

--
Téléassistance / Télémaintenance
http://www.portparallele.com/ThomasDECONTES/
Avatar
Éric Lévénez
Le 26/01/11 18:44, Thomas a écrit :
In article<4d3fb8d1$0$8419$,
Éric Lévénez wrote:

FTP a ses propres limites en caractères spéciaux dans les noms des
fichiers, ceci indépendamment du système de fichier.



merci pour la précision :-)

du coup, même question : une liste de caractères interdits ?



Je n'ai jamais regardé exactement ce qui est autorisé par la norme et ce
qui est réellement implémenté avec les clients et les serveurs.

L'exemple typique est le fichier caché "Iconr" (avec un CR en fin de
nom), que Mac OS X utilisait il y a quelques temps. Avec FTP on pouvait
envoyer ce fichier sur un serveur FTP (pour mettre à jour un site web
par exemple), mais on ne pouvait plus le supprimer. Le seul moyen était
de demander au webmaster de le supprimer à la main directement sur le
serveur...


--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Avatar
Erwan David
Paul Gaborit écrivait :


Un bon test consiste à créer dans un même répertoire deux fichiers
portant le même nom mais l'un avec une représentation composée des
accents et l'autre avec une représentation décomposée. Ensuite on
présente cela à différents logiciels sur différents OS et on admire le
résulat... en rigolant ou en pleurant selon l'humeur du moment !



Ajoutons :
* le problème des systèmes de fichier insensibles à la casse. (ce qui me
fait penser que Posix est trop laxiste : pour être portable il
faut éviter d'avoir toto.c et TOTO.C)

* les noms interdits (n'utilisez pas un fichier aux.h sous windows, il
serait mélangé avec le port série...)




--
Le travail n'est pas une bonne chose. Si ça l'était,
les riches l'auraient accaparé
Avatar
Antoine Leca
Thomas écrivit :
In article <ihjier$h9b$,
Antoine Leca wrote:
Qui plus est, dans les versions antérieures à l'actuelle, il y a avait
une recommandation [Posix:2003 : XBD 3.170 "Filename Portability"] pour
utiliser ce jeu réduit de 65 caractères ; cette recommandation a été
apparemment supprimée dans la version actuelle de la norme.



ouf !

par contre, cette recommandation qui était trop contraignante pour
l'usage moyen actuel de l'informatique, elle n'a pas été remplacée par
une autre recommandation qui serais un tout petit peu plus contraignante
que "Tout sauf 0 et /" ?



Pas sûr que tu vas aimer la réponse...

La recommandation (qui n'était donc qu'un conseil sans frais) est
devenue une "shall clause" (désolé, je ne connais pas le terme français
correspondant), sous le numéro 4.7, "Filename Portability"
For a filename to be portable across implementations conforming
to POSIX.1-2008, it shall consist only of the portable
filename character set as defined in Portable Filename
Character Set .
(autrement dit, le même contenu que précédement.)


Cela étant, les choses n'ont pas beaucoup changé, je pense que le fait
d'être « portable entre implémentations » n'est une contrainte effective
que pour la commande pax (tar. cpio) et les formats de fichiers
correspondants : en particulier, une application strictement conforme
Posix (2.2.1) n'est pas contrainte à ce niveau ; note néanmoins que les
applications conformes XSI (2.2.4, l'échelon le plus «libéral»)
n'offrent aucune liberté supplémentaire à ce niveau :-(.
Comme l'explique l'introduction, cette notion de « portable entre
implémentations » correspond plutôt à l'objectif initial de l'effort de
normalisation Posix, à la ligne directrice.

Cependant, le fait que la "shall clause" soit maintenant plus visible
(un des 22 concepts généraux au lieu d'être perdue dans les 440 et
quelques définitions), pourrait donner l'idée à certains organismes qui
se base sur Posix (comme les obligations imposées aux fournisseurs
contractuels du gouvernement américain, qui furent historiquement les
artisans du succès de Posix dans les années 90), de la rendre partie
intégrante des contraintes d'échanges entre systèmes ouverts...


j'ai posé cette question pour savoir quoi dire à celui qui gère
dl.free.fr, qui interdit un tas de caractères quand on envoie les
fichiers par ftp (dont notamment l'espace),



L'espace dans les noms de fichiers est du point de vue de la portabilité
une engeance, dont chaque administrateur voudrait être débarrassé autant
que faire ce peu (même dans le monde Windows, où pourtant ils sont
nettement plus fréquents).

Autrement dit, je sympathise avec l'administrateur de Free... et je
comprend bien ton insistance !


Antoine
Avatar
Jo Engo
Un lundi de 2011, Erwan (David) dans fr.comp.os.unix :

Thomas écrivait :

> bonjour :-)
>
>
> en fait, pour commencer,
> est ce que la norme UNIX donne une liste de caractères autorisés
> dans les noms de fichiers, et/ou une liste de caractères interdits ?

Tout est autorisé sauf 0 et /



~/tests$ touch ∕slash
~/tests$ ls -l
total 0
-rw-r--r-- 1 yjml yjml 0 12 sept. 18:47 ∕slash

Après si on veut que ce soit utilisable, faut un peu plus
restreindre...







--
Tous les paranoïaques me persécutent (Umberto Eco)
Avatar
Alain Montfranc
Jo Engo a utilisé son clavier pour écrire :
Un lundi de 2011, Erwan (David) dans fr.comp.os.unix :

Thomas écrivait :

bonjour :-)


en fait, pour commencer,
est ce que la norme UNIX donne une liste de caractères autorisés
dans les noms de fichiers, et/ou une liste de caractères interdits ?



Tout est autorisé sauf 0 et /



~/tests$ touch ∕slash
~/tests$ ls -l
total 0
-rw-r--r-- 1 yjml yjml 0 12 sept. 18:47 ∕slash





Marche pas sur mon nunux...
Avatar
Stephane CHAZELAS
2011-09-12, 19:35(+02), Alain Montfranc:
Jo Engo a utilisé son clavier pour écrire :
Un lundi de 2011, Erwan (David) dans fr.comp.os.unix :

Thomas écrivait :

bonjour :-)


en fait, pour commencer,
est ce que la norme UNIX donne une liste de caractères autorisés
dans les noms de fichiers, et/ou une liste de caractères interdits ?



Tout est autorisé sauf 0 et /



~/tests$ touch ∕slash
~/tests$ ls -l
total 0
-rw-r--r-- 1 yjml yjml 0 12 sept. 18:47 ∕slash





Marche pas sur mon nunux...



C'est parce que tu n'as pas copy-pasté. Le / ci-dessus est un
division slash (U+2215) (qui d'ailleurs n'a rien de special pour
le shell non-plus, donc le "" n'est pas necessaire).

--
Stephane
Avatar
Stephane CHAZELAS
2011-09-13, 11:00(+02), Antoine Leca:
Jo Engo écrivit :
Un lundi de 2011, Erwan (David) dans fr.comp.os.unix :

est ce que la norme UNIX donne une liste de caractères autorisés
dans les noms de fichiers, et/ou une liste de caractères interdits ?



Tout est autorisé sauf 0 et /



~/tests$ touch ∕slash
~/tests$ ls -l
total 0
-rw-r--r-- 1 yjml yjml 0 12 sept. 18:47 ∕slash



Et ?

La question était, « norme [...] autoris[e] ». La norme n'autorisant pas
/, Erwan est fondé dans sa réponse.



La norme autorise u2215 (division slash) en utf8 puisque la
sequence d'octet correspondante ne contient ni ASCII NUL (0) ni
ASCII SLASH (0x2F).

Tu aurais plus de poids si tu montrais un cas où une machine certifiée
n'autorisait pas un caractère (en dehors de et /)


[...]

Attention de ne pas confondre caractère et byte dans ce
contexte. Par exemple, on peut concevoir un character encoding
(par exemple UTF16/UCS2) ou certains caracteres contiennent les
bytes 0 ou 0x2F et ces caracteres poseraient probleme aussi.

--
Stephane
Avatar
Antoine Leca
Stephane CHAZELAS écrivit :
Attention de ne pas confondre caractère et byte dans ce



Oui

contexte. Par exemple, on peut concevoir un character encoding
(par exemple UTF16/UCS2) ou certains caracteres contiennent les
bytes 0 ou 0x2F et ces caracteres poseraient probleme aussi.



Non, pas de problème si on ne confond pas.
Certaines implémentations de la norme Posix-90 utilisent justement cet
encodage pour les caractères, et bien que les noms de fichiers
contiennent les octets 0 ou 0x2F, cela ne pose pas de problème, c'est le
travail de l'implémentation de faire le tri.

Depuis la norme de 2001 le problème ne se pose plus, car cette révision
force les caractères à être codés sur une base de 8 bits (CHAR_BIT==8),
en utilisant éventuellement les multiplets (pour être compatible avec
l'interface de programmation réseau, sockets et compagnie).
Donc les encodages genre UTF-16 ne sont plus valides au niveau de
l'interface de programmation, il faut recoder par exemple en UTF-8
(comme dans le message de « Jo Engo ») ou en UCN (comme dans les tiens).
Et là on voit bien qu'il n'y a plus de problème :^)


Antoine
1 2