Pourquoi Windows utilise-t-il des barres obliques inverses pour les chemins et des barres obliques Unix?

Réponses:

98

Unix a été introduit /comme séparateur de répertoires vers 1970. Je ne sais pas pourquoi exactement ce caractère a été choisi; le système ancêtre Multics utilisé >, mais les concepteurs d’Unix l’avaient déjà utilisé >avec <pour la redirection dans le shell (voir Pourquoi le répertoire racine est-il indiqué par un /signe? ).

MS-DOS 2.0 a été introduit \comme séparateur de répertoires au début des années 1980. La raison /n'était pas utilisée, c'est que MS-DOS 1.0 (qui ne supportait pas du tout les répertoires) utilisait déjà /pour introduire des options de ligne de commande. Il a fallu cet usage /du CP / M , qui a pris de VMS . Vous pouvez lire une explication plus détaillée de la raison pour laquelle ce choix a été fait sur le blog de Larry Osterman (MS-DOS avait même brièvement la possibilité de changer le caractère d'option en -et le séparateur de répertoire en /, mais cela ne collait pas).

/il est reconnu par la plupart des API de niveau programmeur (dans toutes les versions de DOS et Windows). Vous pouvez donc souvent, mais pas toujours, utiliser /Windows comme séparateur de répertoires. Une exception notable est que vous ne pouvez pas utiliser /de séparateur après le \\?préfixe qui (même sous Windows 7) est le seul moyen de spécifier un chemin utilisant Unicode ou contenant plus de 260 caractères.

Certains éléments de l'interface utilisateur prennent /en charge les séparateurs de répertoires sous Windows, mais pas tous. Certains programmes ne font que transmettre les noms de fichiers à l'API sous-jacente, de sorte qu'ils prennent en charge /et \indifféremment. Dans l'interpréteur de commande (en command.comou cmd), vous pouvez utiliser /dans de nombreux cas, mais pas toujours; cela dépend en partie de la version de Windows (par exemple, cd /windowsfonctionne sous XP et 7 mais pas sous Windows 9x). La zone de saisie du chemin de l’explorateur accepte /(du moins à partir de XP; probablement parce qu’elle accepte également les URL). D'autre part, la boîte de dialogue d'ouverture de fichier standard rejette les barres obliques .

Gilles
la source
2
/est reconnu en tant que séparateur de répertoire par la ligne de commande MS-DOS ou Windows.
Tamara Wijsman
1
"C: \ Windows \ System32> cd / windows / system" fonctionne.
Andrew J. Brehm
@TomWij: Avez-vous une référence pour savoir où précisément /est accepté sur la ligne de commande? Par exemple, que fait dir /p-on? et dir c:/p? et c:/windows/notepad.exe? et start /windows/notepad.exe? etc. (Je n'ai pas de machine Windows à tester.)
Gilles
2
/a probablement été utilisé comme séparateur de répertoire sous UNIX, car c’était une clé facile (non décalée) pour frapper un télétype. Les caractères spéciaux non décalés étaient : - ; , . /.
Daniel R Hicks
2
Il est intéressant de noter que j’ai récemment fouillé dans des sources et des manuels DOS 1 et 2 et découvert que Microsoft utilisait /(et -pour les commutateurs) comme Xenix et s’inspirait de Xenix, mais IBM a été fourni avant que Microsoft soit livré aux OEM, et IBM utilisé ` (and / `pour les commutateurs) et a changé l'invite de A:à en A>afin qu'ils aient changé la documentation par défaut et expédiée du bogué (en supposant que // -) plus une note indiquant qu'elle a été changée et pourquoi.
mirabilos
9

L' API Windows sous-jacente peut accepter la barre oblique inversée ou la barre oblique afin de séparer les composants de chemin d'accès d'un répertoire et d'un fichier, mais la convention de Microsoft est d'utiliser une barre oblique inverse et les API qui renvoient les chemins mettent une barre oblique inversée.

MS-DOS 2.0 a copié le système de fichiers hiérarchique sous Unix et a donc utilisé la barre oblique, mais (éventuellement sur insistance d' IBM ) a ajouté une barre oblique inverse pour autoriser la saisie de chemins d'accès dans le shell de commande tout en préservant la compatibilité avec MS-DOS 1.0 et le CP. / M où la barre oblique était l'indicateur d'option de ligne de commande.

Comparer

dir/w

qui montre le répertoire courant en format large contre

dir\w

qui exécute le wfichier dans le directeur dir.

Références:

Tamara Wijsman
la source