Question Pourquoi Windows utilise-t-il des barres obliques inverses pour les chemins d'accès et les barres obliques Unix?


Cela m'agace d'avoir utilisé Unix à l'université et de travailler maintenant du côté de Windows. Quelle est l'histoire derrière cette décision? Quelqu'un sait pourquoi cela a fonctionné de cette façon?


82
2017-08-16 13:37


origine


Slash versus backslash comme séparateur de répertoire - quoi / qui a causé cette faille? - phuclv


Réponses:


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

MS-DOS 2.0 introduit \ comme séparateur de répertoires au début des années 1980. La raison / n'a pas été utilisé 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 de / de CP / M, qui l'a pris de VMS. Vous pouvez lire une explication plus approfondie des raisons pour lesquelles ce choix a été fait sur le blog de Larry Osterman (MS-DOS même brièvement eu une option pour changer le caractère d'option à - et le séparateur de répertoire à /, mais ça n'a pas collé).

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

Certains éléments d'interface utilisateur prennent en charge / en tant que séparateur de répertoires sous Windows, mais pas tous. Certains programmes transmettent simplement les noms de fichiers à l’API sous-jacente, de sorte qu’ils prennent en charge / et \ indifféremment. Dans l'interpréteur de commandes (dans command.com ou cmd), vous pouvez utiliser / dans de nombreux cas, mais pas toujours; Cela dépend en partie de la version de Windows (par exemple, cd /windows fonctionne sous XP et 7 mais pas sous Windows 9x). La zone de saisie du chemin d’explorateur accepte / (au moins à partir de XP, probablement parce qu'il accepte également les URL). Par ailleurs, la boîte de dialogue d'ouverture de fichier standard rejette les barres obliques.


96
2017-08-16 14:02



/ est reconnu comme séparateur de répertoires par la ligne de commande MS-DOS ou Windows. - Tom Wijsman
"C: \ Windows \ System32> cd / windows / system" fonctionne. - Andrew J. Brehm
@TomWij: Avez-vous une référence à où exactement / est accepté sur la ligne de commande? Par exemple, qu'est-ce que dir /p faire? et dir c:/p? et c:/windows/notepad.exe? et start /windows/notepad.exe? etc. (je n'ai pas de machine Windows ici pour tester.) - Gilles
/ était probablement utilisé comme séparateur de répertoire sous UNIX, car il s'agissait d'une clé simple (non modifiée) permettant de frapper un télétype. Les caractères spéciaux non décalés étaient : - ; , . /. - Daniel R Hicks
Chose intéressante, j'ai récemment fouillé dans les sources et les manuels DOS 1 et 2 et découvert que Microsoft utilisait / (et - pour les commutateurs) comme Xenix, et inspiré par Xenix, mais IBM est sorti avant que Microsoft ne soit livré aux OEM, et IBM a utilisé ` (and / `pour les commutateurs) et a changé l'invite de A: à A> donc ils ont changé le défaut et expédié buggy (en supposant toujours //-) plus une note indiquant qu’elle a été modifiée et pourquoi. - mirabilos


le API Windows sous-jacente peut accepter la barre oblique inversée ou la barre oblique pour séparer les composants de répertoire et de fichier d'un chemin, mais la convention de Microsoft consiste à utiliser une barre oblique inverse et les API qui renvoient des chemins vers la barre oblique inverse.

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

Comparer

dir/w

qui montre le répertoire actuel au format large contre

dir\w

qui exécute le w déposer dans le directeur dir.

Les références:


8
2017-08-16 13:52