¿Por qué Windows usa barras diagonales inversas para rutas y barras diagonales Unix?


Respuestas:


98

Unix se introdujo /como el separador de directorios en algún momento alrededor de 1970. No sé por qué se eligió exactamente este personaje; el sistema ancestro que usaba Multics >, pero los diseñadores de Unix ya lo habían usado >junto con la <redirección en el shell (consulte ¿Por qué el directorio raíz se denota con un /signo? ).

MS-DOS 2.0 se introdujo \como el separador de directorios a principios de la década de 1980. La razón /por la que no se usó es que MS-DOS 1.0 (que no admitía directorios en absoluto) ya estaba usando /para introducir opciones de línea de comandos. Se tomó este uso de /de CP / M , que tomó de VMS . Puede leer una explicación más exhaustiva de por qué se hizo esa elección en el blog de Larry Osterman (MS-DOS incluso tuvo la opción de cambiar brevemente el carácter de opción -y el separador de directorio /, pero no se mantuvo).

/es reconocido por la mayoría de las API de nivel de programador (en todas las versiones de DOS y Windows). Por lo tanto, a menudo, pero no siempre, puede salirse con la suya /como separador de directorios en Windows. Una excepción notable es que no se puede usar /como separador después del \\?prefijo que (incluso en Windows 7) es la única forma de especificar una ruta usando Unicode o que contiene más de 260 caracteres.

Algunos elementos de la interfaz de usuario son compatibles /como un separador de directorios en Windows, pero no todos. Algunos programas simplemente pasan los nombres de archivo a la API subyacente, por lo que son compatibles /e \indiferentes. En el intérprete de comandos (en command.como cmd), puede usarlo /en muchos casos, pero no siempre; esto depende en parte de la versión de Windows (por ejemplo, cd /windowsfunciona en XP y 7 pero no en Windows 9x). El cuadro de entrada de la ruta del Explorador acepta /(al menos desde XP en adelante; probablemente porque también acepta URL). Por otro lado, el cuadro de diálogo abierto de archivo estándar rechaza las barras .


2
/es reconocido como un separador de directorio por la línea de comandos de MS-DOS o Windows.
Tamara Wijsman

1
"C: \ Windows \ System32> cd / windows / system" funciona.
Andrew J. Brehm

@TomWij: ¿Tiene una referencia sobre dónde /se acepta con precisión en la línea de comando? Por ejemplo, ¿qué hace dir /p? y dir c:/p? y c:/windows/notepad.exe? y start /windows/notepad.exe? etc. (No tengo una máquina Windows aquí para probar.)
Gilles

2
/probablemente se usó como el separador de directorio en UNIX porque era una tecla fácil (sin desplazamiento) para golpear en un teletipo. Los caracteres especiales no desplazados eran : - ; , . /.
Daniel R Hicks

2
Curiosamente, recientemente busqué en las fuentes y manuales de DOS 1 y 2 y descubrí que Microsoft usaba /(y -para conmutadores) como Xenix, e inspirado por Xenix, pero IBM lanzó antes de que Microsoft enviara a los OEM, e IBM utilizó ` (and / 'para conmutadores) y cambió la solicitud de A:a A>para que cambiaran la documentación predeterminada y enviada con errores (aún asumiendo // -) más una nota de que se cambió y por qué.
mirabilos

9

La API de Windows subyacente puede aceptar la barra diagonal inversa o la barra diagonal para separar los componentes de directorio y archivo de una ruta, pero la convención de Microsoft es usar una barra diagonal inversa, y las API que devuelven rutas colocan barra diagonal inversa.

MS-DOS 2.0 copió el sistema de archivos jerárquico de Unix y, por lo tanto, usó la barra diagonal, pero (posiblemente por insistencia de IBM ) agregó la barra diagonal inversa para permitir que las rutas se escriban en el shell de comandos mientras se mantiene la compatibilidad con MS-DOS 1.0 y CP / M donde la barra diagonal era el indicador de opción de línea de comandos.

Comparar

dir/w

que muestra el directorio actual en formato ancho contra

dir\w

que ejecuta el warchivo en el director dir.

Referencias

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.