Saltar al contenido

Diferencia entre barra diagonal (/) y barra invertida () en la ruta del archivo

Si hallas algún problema en tu código o proyecto, recuerda probar siempre en un entorno de testing antes aplicar el código al proyecto final.

Solución:

/ es el separador de ruta en sistemas Unix y similares a Unix. Windows moderno generalmente puede usar ambos y / indistintamente para rutas de archivo, pero Microsoft ha abogado por el uso de como separador de caminos durante décadas.

Esto se hace por razones históricas que se remontan a la década de 1970, antes de Windows en más de una década. Al principio, MS-DOS (la base de los primeros Windows) no admitía directorios. Unix tenía soporte de directorio usando el / personaje desde el principio. Sin embargo, cuando se agregaron directorios en MS-DOS 2.0, Microsoft e IBM ya estaban usando el / carácter para conmutadores de comando, y debido al analizador ligero de DOS (descendiente de QDOS, diseñado para ejecutarse en hardware de gama baja), no pudieron encontrar una forma factible de usar el / carácter sin romper la compatibilidad con sus aplicaciones existentes.

Por lo tanto, para evitar errores sobre “falta un interruptor” o “interruptor no válido” al pasar rutas de archivo como argumentos a comandos como estos:

cd/                        <---- no switch specified
dir folder1/folder2        <---- /folder2 is not a switch for dir

se decidió que el en su lugar, se usaría un carácter, por lo que podría escribir esos comandos como este

cd
dir folder1folder2

sin error.

Más tarde, Microsoft e IBM colaboraron en un sistema operativo no relacionado con DOS llamado OS / 2. OS / 2 tenía la capacidad de utilizar ambos separadores, probablemente para atraer a más desarrolladores Unix. Cuando Microsoft e IBM se separaron en 1990, Microsoft tomó el código que tenían y creó Windows NT, en el que se basan todas las versiones modernas de Windows, llevando consigo este agnosticismo separador.


Como la compatibilidad con versiones anteriores ha sido el nombre del juego para Microsoft de todas las principales transiciones del sistema operativo que han realizado (DOS a Win16 / DOS, a Win16 / Win32, a Win32 / WinNT), esta peculiaridad se atascó, y probablemente lo hará. existen por un tiempo todavía.

Es por eso que existe esta discrepancia. Realmente no debería tener ningún efecto en lo que está haciendo porque, como dije, WinAPI generalmente puede usarlos indistintamente. Sin embargo, las aplicaciones de terceros probablemente fallarán si pasa un / cuando esperan un entre los nombres de directorio. Si está usando Windows, quédese con . Si está usando Unix o URI (que tienen su base en las rutas de Unix, pero esa es otra historia completamente), use /.


En el contexto de C #: Cabe señalar, ya que este es técnicamente una pregunta de C #, que si desea escribir más código C # "portátil" que funcione tanto en Unix como en Windows (incluso si C # es predominantemente un lenguaje de Windows), es posible que desee usar el Path.DirectorySeparatorChar campo para que su código use el separador preferido en ese sistema, y ​​use Path.Combine() para agregar rutas correctamente.

MS-DOS 1.0 retuvo la convención de caracteres de opción de línea de comando (o conmutador) de '/' de CP / M. En ese momento no había estructura de directorios en el sistema de archivos y no había ningún conflicto.

Cuando Microsoft desarrolló un entorno más parecido a Unix con MS-DOS (y PC-DOS) 2.0, necesitaban representar el separador de ruta usando algo que no entrara en conflicto con las opciones de línea de comandos existentes. Internamente, el sistema funciona igualmente bien con '/' o ''. El procesador de comandos (y muchas aplicaciones) continuaron usando '/' como carácter de cambio.

A CONFIG.SYS entrada SWITCHAR=- podría usarse para anular el / predeterminado para mejorar la compatibilidad con Unix. Esto hace que los comandos integrados y las utilidades estándar utilicen el carácter alternativo. El separador de ruta de Unix podría usarse sin ambigüedades para los nombres de archivos y directorios. Esta entrada se eliminó en versiones posteriores, pero se documentó una llamada de DOS para establecer el valor después del arranque.

Esto se usó poco y la mayoría de las herramientas de terceros se mantuvieron sin cambios. La confusión persiste. Muchos puertos de herramientas de Unix conservan el carácter de conmutador '-' mientras que algunos admiten ambas convenciones.

El siguiente procesador de comandos de PowerShell implementa rigurosos parámetros de cambio y escape y evita en gran medida la confusión, excepto cuando se utilizan herramientas heredadas.

Ni la pregunta ni la respuesta se relacionan con C #.

En sistemas basados ​​en Unix es un personaje de escape, es decir, le dice al analizador que este es un espacio y no el final de la declaración. En sistemas Unix / es el separador de directorios.

En Windows es el separador de directorios, pero el / no se puede utilizar en nombres de archivos o directorios.

Valoraciones y reseñas

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *