filename Commandes Internes Tcl
NOM
filename - conventions de nom de fichiers supportées par les commandes Tcl
INTRODUCTION
Toutes les commandes Tcl et les fonctions C qui attendent des noms de fichier comme arguments les attendent sous une parmi trois formes, dépendantes de la plateforme courante. Sur chaque plateforme, Tcl supporte les noms de fichier standard de cette plateforme. De plus, sur toutes les plateformes, Tcl supporte une syntaxe Unix-like conçue pour fournir une manière pratique de construire des noms de fichier simples. Néanmoins, les scripts qui sont conçus pour être portables ne devront pas présumer d'une forme particulière pour les noms de fichier. Par contre, les scripts portables doivent utiliser les commandes
file split et
file join pour manipuler les noms de fichier (voyez la page de manuel de
file pour plus de détails)
TYPES DE CHEMIN
Les noms de fichier sont groupés dans trois types généraux basés sur le point de départ du chemin utilisé pour désigner le fichier: absolu, relatif, et volume-relatif. Les noms absolus sont complètement qualifiés, donnant un chemin vers le fichier relativement à un volume particulier et au répertoire racine sur ce volume. Les noms relatifs sont non-qualifiés, donnant un chemin vers le fichier relativement au répertoire de travail courant. Les noms Volume-relatif sont partiellement qualifiés, soit donnant le chemin relativement au répertoire racine sur le volume courant, ou relativement au répertoire courant du volume spécifié. La commande file pathtype peut être utilisée pour determiner le type d'un chemin donné.
SYNTAXE DE CHEMIN
Les règles des noms natifs dependent de la valeur rapportée dans l'élément du tableau Tcl
tcl_platform(platform):
- mac
- Sur les systèmes Apple Macintosh, Tcl supporte deux formes de noms de chemin. Les styles normaux de noms Mac utilisent les deux points comme séparateurs de chemin Les chemins peuvent être relatifs ou absolus, et les noms de fichier peuvent conternir tout caractère autre que les deux points Un caractère deux points en tête cause l'interprétation du reste du chemin comme relatif au répertoire courant. Si un chemin contient deux points qui ne sont pas en tête, alors le chemin est interprété comme un chemin absolu Des séquences de deux ou plus deux points ailleurs dans le chemin sont utilisées pour construire des chemins relatifs ou :: se réfère au parent du répertoire courant, ::: se réfère au parent du parent, et ainsi de suite.
En supplément au noms style Macintosh, Tcl aussi supporte un sous ensemble de noms Unix-like Si un chemin ne contient pas les deux points, alors il est interprété comme un chemin Unix Le slash est utilisé comme séparateur de chemin Le nom de chemin . se réfère au répertoire courant, et .. se réfère au parent du répertoire courant Néanmoins, quelque noms comme / ou /.. ne sont pas assignés, et sont interprétés comme noms Macintosh En general, les commandes qui générent les noms de fichier renverront des noms style Macintosh, mais les commandes qui attendent des noms de fichier acceptent aussi bien les noms style Macintosh que Unix.
Les exemples suivants illustrent les formes variées de noms de chemin:
:- Chemin relatif au dossier courant.
MyFile- Chemin relatif à un nom de chemin MyFile dans le dossier courant.
MyDisk:MyFile- Chemin absolu à un fichier nommé MyFile sur le périphérique nommé MyDisk.
:MyDir:MyFile- Chemin relatif à un fichier nommé MyFile dans un dossier nommé MyDir dans le dossier courant.
::MyFile- Chemin relatif à un fichier nommé MyFile dans le dossier parent du dossier courant.
:::MyFile- Chemin relatif à un fichier nommé MyFile dans le dossier deux niveaux au dessus du dossier courant.
/MyDisk/MyFile- Chemin absolu à un fichier nommé MyFile sur le périphérique nommé MyDisk.
../MyFile- Chemin relatif à un fichier nommé MyFile dans le dossier parent du dossier courant.
- unix
- Sur les plateformes Unix, Tcl utilise des noms de chemin où les composants sont séparés par des slashes. Les noms de chemin peuvent être relatifs ou absolus, et les noms de fichier peuvent contenir tout caractère autre que le slash Les noms de fichier . et .. sont spéciaux et se refèrent au répertoire courant et au parent du répertoire courant respectivement Plusieurs caractères slashes adjacents sont interprété comme un seul séparateur. Les exemples suivants illustrent les formes variées de noms de chemin:
/- Chemin absolu au répertoire racine.
/etc/passwd- Chemin absolu vers le fichier nommé passwd dans le répertoire etc du répertoire racine.
.- Chemin relatif au répertoire courant.
foo- Chemin relatif au fichier foo dans le répertoire courant.
foo/bar- Chemin relatif au fichier bar dans le répertoire foo du répertoire courant.
../foo- Chemin relatif au fichier foo dans le répertoire parent du répertoire courant.
- windows
Sur les plateformes Microsoft Windows, Tcl supporte les noms relatifs au lecteur et UNC L'ensemble / et \ peut être employé comme séparateurs de répertoires dans les deux types de nom. Les noms relatifs au lecteur consistent en un spécificateur optionnel de lecteur suivi par un chemin absolu ou relatif Les chemins UNC ont la forme generale \\servername\sharename\path\file Sous les deux formes, les noms de fichier . et .. sont spéciaux et se refèrent respectivement au répertoire courant et au parent du répertoire courant. Les exemples suivants illustrent les formes variées de noms de chemin:
\\Host\share/file- chemin UNC absolu vers un fichier appelé file dans le répertoire racine du partage share sur la machine Host.
c:foo
- Chemin relatif au volume vers un fichier foo dans le répertoire courant du lecteur c.
c:/foo- Chemin absolu vers un fichier foo dans le répertoire racine du lecteur c.
foo\bar- Chemin relatif vers un fichier bar dans le répertoire foo dans le répertoire courant sur le volume courant .
\foo
- Chemin relatif au volume vers un fichier foo dans le répertoire racine du volume courant .
SUBSTITUTION DE TILDE
En plus des règles de nom de chemin décrites plus haut, Tcl supporte aussi la substitution de tilde csh-style Si un nom de chemin commence avec un tilde, alors le nom de chemin sera interprété comme si le premier élément etait remplacé par l'emplacement du répertoire home d'un utilisateur donné. Si le tilde est suivi immédiatement par un séparateur, alors la variable d'environnement $HOME est substituée. Sinon les caractères entre le tilde et le séparateur suivant sont pris pour un nom d'utilisateur, qui est utilisé pour récupérer le répertoire home de l'utilisateur pour substitution.
Les plateformes Macintosh et Windows ne supportent pas la substitution tilde quand un nom d'utilisateur suit le tilde. Sur ces plateformes, tenter d'utiliser un tilde suivi d'un nom d'utilisateur générera une erreur. Les noms de fichiers qui ont un tilde sans nom d'utilisateur seront substitués en utilisant la variable d'environnement $HOME, comme sous Unix
PROBLEMES DE PORTABILITE
Tous les système de fichiers ne sont pas sensibles à la casse, donc les scripts eviteront l'emploi d'un code dépendant de la casse dans un nom de chemin. De plus, les jeux de caractères autorisés sur des périphériques différents peuvent différer, donc on choisira des noms de fichiers qui ne contiennent pas de caractères spéciaux comme: <>:"/\| La meilleure approche est d'utiliser des noms consistant de caractères alphanumeriques seulement. Windows 3.1 également ne supporte que les noms de fichier de 8 caractères et une extension de 3 caractères
Dernière révision: 7.5