¿Por qué Windows usa barras diagonales inversas para rutas y barras diagonales Unix?
85
Me molesta haber usado Unix en la universidad y ahora trabajar en el lado de Windows. ¿Cuál es la historia detrás de esta decisión? Alguien sabe por qué funcionó de esta manera?
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 .
/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
Respuestas:
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 (encommand.com
ocmd
), puede usarlo/
en muchos casos, pero no siempre; esto depende en parte de la versión de Windows (por ejemplo,cd /windows
funciona 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 .fuente
/
es reconocido como un separador de directorio por la línea de comandos de MS-DOS o Windows./
se acepta con precisión en la línea de comando? Por ejemplo, ¿qué hacedir /p
? ydir c:/p
? yc:/windows/notepad.exe
? ystart /windows/notepad.exe
? etc. (No tengo una máquina Windows aquí para probar.)/
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: - ; , . /
./
(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 deA:
aA>
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é.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
que muestra el directorio actual en formato ancho contra
que ejecuta el
w
archivo en el directordir
.Referencias
fuente