Una ruta , la forma general del nombre de un archivo o directorio , especifica una ubicación única en un sistema de archivos . Una ruta apunta a una ubicación del sistema de archivos siguiendo la jerarquía del árbol de directorios expresada en una cadena de caracteres en la que los componentes de la ruta, separados por un carácter delimitador, representan cada directorio. El carácter delimitador suele ser la barra inclinada ("/"), la barra inclinada invertida ("\") o los dos puntos (":"), aunque algunos sistemas operativos pueden utilizar un delimitador diferente . Las rutas se utilizan ampliamente en informática.para representar las relaciones directorio / archivo comunes en los sistemas operativos modernos, y son esenciales en la construcción de localizadores uniformes de recursos (URL). Los recursos se pueden representar mediante rutas absolutas o relativas .
Historia
Multics introdujo por primera vez un sistema de archivos jerárquico con directorios (separados por ">") a mediados de la década de 1960. [1]
Alrededor de 1970, Unix introdujo el carácter de barra inclinada ("/") como separador de directorios.
En 1981, se lanzó la primera versión de Microsoft DOS . MS-DOS 1.0 no admitía directorios de archivos. Además, una gran parte de los comandos de la utilidad empaquetados con MS-DOS 1.0 provienen de IBM y su sintaxis de línea de comandos utiliza el carácter de barra como prefijo de "interruptor". Por ejemplo, dir /w
ejecuta el dir
comando con la opción de formato de lista amplia.
Este uso de barra inclinada todavía se puede encontrar en la interfaz de comandos en Microsoft Windows . Por el contrario, Unix usa el carácter de guión ("-") como prefijo de cambio de línea de comando.
Cuando se agregó soporte de directorio a MS-DOS en la versión 2.0, "/" se mantuvo como el carácter de prefijo del conmutador para compatibilidad con versiones anteriores. Microsoft eligió el carácter de barra inclinada invertida ("\") como separador de directorio, que se parece al carácter de barra inclinada, aunque las versiones más modernas de Windows son independientes de la barra inclinada, lo que permite la combinación de ambos tipos de barras inclinadas en una ruta. [2] [3]
Caminos absolutos y relativos
Una ruta absoluta o completa apunta a la misma ubicación en un sistema de archivos, independientemente del directorio de trabajo actual . Para hacer eso, debe incluir el directorio raíz .
Por el contrario, una ruta relativa comienza desde algún directorio de trabajo determinado, evitando la necesidad de proporcionar la ruta absoluta completa. Un nombre de archivo puede considerarse como una ruta relativa basada en el directorio de trabajo actual. Si el directorio de trabajo no es el directorio principal del archivo , se producirá un error de archivo no encontrado si el nombre del archivo se dirige.
Representaciones de rutas por sistema operativo y shell
Sistema operativo | Cáscara | Directorio raíz | Separador de directorio | Directorio actual | Directorio padre | Directorio de inicio | Ejemplos de |
---|---|---|---|---|---|---|---|
SO tipo Unix (incluido macOS ) | Shell de Unix | / | / | . | .. | ~ | /home/user/docs/Letter.txt ./inthisdir ../../greatgrandparent ~/.rcinfo |
DOS | COMMAND.COM | [drive letter:]\ o \\[server name]\[volume]\ | \ | . | .. | C:\USER\DOCS\LETTER.TXT A:PICTURE.JPG \\SERVER01\USER\DOCS\LETTER.TXT | |
OS / 2 | cmd.exe | [drive letter:]\ o \\[server name]\[volume]\ | / o \ | . | .. | C:\user\docs\Letter.txt A:Picture.jpg \\SERVER01\USER\docs\Letter.txt | |
Microsoft Windows | cmd.exe | \ (relativo a la raíz del directorio de trabajo actual)o [drive_letter]:\ o o o o o \\[server]\[sharename]\ \\?\[drive_spec]:\ \\?\[server]\[sharename]\ \\?\UNC\[server]\[sharename]\ \\.\[physical_device]\ | / o \ | . | .. [4] | C:\user\docs\Letter.txt /user/docs/Letter.txt C:\Letter.txt \\Server01\user\docs\Letter.txt \\?\UNC\Server01\user\docs\Letter.txt \\?\C:\user\docs\Letter.txt C:\user\docs\somefile.ext:alternate stream name ./inthisdir ../../greatgrandparent | |
Windows PowerShell | [drive letter:]/ o [drive name:]\ o o\\[server name]\
| / o \ | . | .. | ~ | C:\user\docs\Letter.txt C:\user/docs\Letter.txt \\Server01\user\docs\Letter.txt cd ~\Desktop
| |
TOPS-20 | DCL | [device name:] | . | PS: | |||
RSX-11 | MCR | [device name:] | DR0:[30,12]LETTER.TXT;4 | ||||
OpenVMS | DCL | [device name:][000000] o
| . | [] | [-] | SYS$LOGIN: | SYS$SYSDEVICE:[USER.DOCS]PHOTO.JPG
|
Mac OS clásico | [volume or drive name]: | : | : | :: | Macintosh HD:Documents:Letter :fileincurrentdir ::fileinparent :::fileingrandparent | ||
ProDOS | AppleSoft BÁSICO | /[volume or drive name]/ | / | /SCHOOL.DISK/APPLEWORKS/MY.REPORT
| |||
AmigaOS | Amiga CLI / AmigaShell | [drive, volume, device or assign name]: | / | "" (cuerda vacía) | / | Workbench:Utilities/MultiView DF0:S/Startup-Sequence S:Startup-Sequence TCP:en.wikipedia.com/80 | |
Sistema operativo RISC | ShellCLI | [fs type[#option]:][:drive number or disc name.]$ nota: &,% y @ también se pueden usar para hacer referencia a la raíz | . | @ | ^ | & | ADFS::MyDrive.$.Documents.Letter Net#MainServer::DataDrive.$.Main.sy10823 LanMan::WindowsC.$.Pictures.Japan/gif NFS:&.!Choices ADFS:%.IfThere @.inthisdir ^.^.greatgrandparent Cuando se montan sistemas de archivos con extensiones de nombre de archivo, |
Sistema operativo Symbian | Administrador de archivos | \ | \ | \user\docs\Letter.txt | |||
Dominio / SO | Cáscara |
| / | . | \ | ~ | //node/home/user/docs/Letter.txt ./inthisdir \\greatgrandparent ~rcinfo |
Menuetos | CMD | / | / | ||||
Stratus VOS | Intérprete de línea de comandos de VOS | %[system_name]#[module_name]> | > | < | %sysname#module1>SubDir>AnotherDir | ||
Núcleo NonStop | Lenguaje de comandos avanzado TACL Tandem | Sin raíz | . | sin directorio principal | \NODE.$DISK.SUBVOL.FILE \NODE.$DEVICE \NODE.$DEVICE.#SUBDEV.QUALIFIER | ||
CP / M | PCCh | [drive letter:] | sin soporte de directorio, solo áreas de usuario 0 – F | A:LETTER.TXT | |||
GS / OS | :[volume name]: o .[device name]: o[prefix]: nota: el prefijo puede ser un número (0–31), | : o / | @ | :Apps:Platinum.Paint:Platinum.Paint *:System:Finder .APPLEDISK3.5B/file |
Las versiones japonesa y coreana de Windows a menudo pueden mostrar el carácter ' ¥ ' o el carácter ' ₩ ' en lugar del separador de directorio. En tales casos, el código de una barra invertida se dibuja como estos caracteres. Las primeras versiones de MS-DOS reemplazaron la barra invertida con estos glifos en la pantalla para que sea posible mostrarlos en programas que solo entendían ASCII de 7 bits (también se reemplazaron otros caracteres, como los corchetes, consulte ISO 646 , Windows Página de códigos 932 (japonés Shift JIS) y página de códigos 949 (coreano) ). Aunque incluso la primera versión de Windows admitía el conjunto de caracteres ISO-8859-1 de 8 bits que tiene el signo de Yen en U + 00A5, y las versiones modernas de Windows admiten Unicode que tiene el signo de Won en U + 20A9, gran parte del software continuará. para mostrar barras invertidas que se encuentran en archivos ASCII de esta manera para preservar la compatibilidad con versiones anteriores. [5]
Mac OS X , como un derivado de UNIX, usa rutas de UNIX internamente. Sin embargo, para preservar la compatibilidad del software y la familiaridad de los usuarios, muchas partes de la GUI cambian "/" ingresadas por el usuario a ":" internamente, y las cambian cuando se muestran los nombres de archivo (un ":" ingresado por el usuario también cambia en "/" pero la traducción inversa no ocurre).
Rutas en lenguajes de programación
Los lenguajes de programación también usan rutas. Por ejemplo: cuando se abre un archivo. La mayoría de los lenguajes de programación utilizan la representación de la ruta del sistema operativo subyacente:
uxFile = fopen("project/readme.txt", "r")
winFile = fopen("C:\\Program Files\\bin\\config.bat", "r")
Este acceso directo a las rutas del sistema operativo puede dificultar la portabilidad de los programas. Para admitir programas portátiles, Java usa File.separator para distinguir entre / y \ rutas separadas. Seed7 tiene un enfoque diferente para la representación de la ruta. En Seed7, todas las rutas utilizan la convención de rutas de Unix, independientemente del sistema operativo. Bajo Windows se lleva a cabo un mapeo (por ejemplo: la ruta / c / users se mapea a c: \ users ).
Convención de nomenclatura universal
Microsoft Windows UNC , abreviatura de Convención de nomenclatura universal o Convención de nomenclatura uniforme , especifica una sintaxis común para describir la ubicación de un recurso de red, como un archivo, directorio o impresora compartidos. La sintaxis UNC para sistemas Windows tiene la forma genérica:
\\ ComputerName \ SharedFolder \ Resource
Microsoft a menudo se refiere a esto como una " ruta de red ".
Algunas interfaces de Microsoft Windows también permiten o requieren la sintaxis UNC para el acceso compartido de WebDAV , en lugar de una URL. La sintaxis UNC se amplía [6] con componentes opcionales para indicar el uso de SSL y número de puerto TCP / IP, una URL WebDAV de se http[s]://HostName[:Port]/SharedFolder/Resource
convierte en
\\ HostName [@SSL] [@ Port] \ SharedFolder \ Resource
Cuando se ve de forma remota, "SharedFolder" puede tener un nombre diferente al que ve un programa en el servidor al abrir "\ SharedFolder". En cambio, el nombre SharedFolder consiste en un nombre arbitrario asignado a la carpeta al definir su "compartir".
Algunas interfaces de Microsoft Windows también aceptan el "Long UNC":
\\? \ UNC \ ComputerName \ SharedFolder \ Resource
Microsoft Windows utiliza los siguientes tipos de rutas:
- sistema de archivos local (LFS), como
C:\File
- Convención de nomenclatura universal (UNC), como
\\Server\Volume\File
o /
(al menos en Windows 7 y versiones posteriores)[\Directory name] - ruta de dispositivo "larga" como
\\?\C:\File
o\\?\UNC\Server\Volume\File
. [7] Esta ruta apunta al espacio de nombres del archivo local y\\.\
es similar que apunta al espacio de nombres del dispositivo DOS local. Este formato también es la ruta "sin procesar" o "no interpretada", ya que envía rutas directamente al sistema de archivos sin convertir / a \ e interpretar nombres como .. . [8] - Administrador de objetos de Windows NT
\\??\
: rutas con prefijo (espacio de nombres global de DOS). [9] [10]
En las versiones de Windows anteriores a Windows XP, solo las API que aceptan rutas de dispositivo "largas" podían aceptar más de 260 caracteres.
El shell de Windows XP y Windows Vista , explorer.exe , permite nombres de ruta de hasta 248 caracteres. [ cita requerida ]
Desde UNCs comienzan con dos barras invertidas, y la barra invertida se utiliza también para la cadena de escape y en las expresiones regulares , esto puede resultar en casos extremos de inclinarse síndrome de palillo de dientes : una escaparon cadena para una expresión regular que coincide con un UNC comienza con 8 barras invertidas - \\\\\\\\
- porque el Tanto la cadena como la expresión regular requieren escapar. Esto se puede simplificar utilizando cadenas sin formato , como en C # @"\\\\"
o Python r'\\\\'
, o literales de expresión regular, como en Perl qr{\\\\}
.
Definición de nombre de ruta POSIX
La mayoría de los sistemas similares a Unix utilizan una sintaxis similar. [11] POSIX permite tratar una ruta que comienza con dos barras de una manera definida por la implementación, [12] aunque en otros casos los sistemas deben tratar múltiples barras como barras simples. [13] Muchas aplicaciones en sistemas similares a Unix (por ejemplo, scp , rcp y rsync ) utilizan definiciones de recursos como:
nombre de host: / ruta de directorio / recurso
o esquemas URI con el nombre del servicio (aquí 'smb'):
smb: // nombre de host / ruta de directorio / recurso
Ejemplo
Estilo Unix
El siguiente ejemplo trabajado analiza el comportamiento de un sistema de archivos de estilo Unix como aparecería en una terminal o aplicación de terminal (ventana de línea de comandos):
Adjunto a un directorio de trabajo actual (cwd) de:
/ usuarios / marca /
Uno quiere cambiar el directorio de trabajo actual a:
/ users / mark / bobapples
En ese momento, la ruta relativa para el directorio deseado se puede representar como:
./bobapples
o para abreviar:
bobapples
y la ruta absoluta para el directorio como:
/ users / mark / bobapples
Dado que bobapples es la ruta relativa para el directorio deseado, se puede escribir lo siguiente en el símbolo del sistema para cambiar el directorio de trabajo actual a bobapples:
cd bobapples
Dos puntos (" .. ") apunte hacia arriba en la jerarquía , para indicar el directorio principal ; un punto (" . ") representa el directorio actual en sí. Ambos pueden ser componentes de una ruta relativa compleja (p. ej.," ../mark/./bobapples "), donde" . "solo o como el primer componente de dicha ruta relativa representa el directorio de trabajo . (Usando" ./foo "para hacer referencia a un archivo" foo "en el directorio de trabajo actual a veces puede distinguirlo de un recurso" foo "que se encuentra en un directorio predeterminado o por otros medios; por ejemplo, para ver una versión específica de una página de manual en lugar de la instalada en el sistema).
Estilo MS-DOS / Microsoft Windows
Contrariamente a la creencia popular, la API del sistema de Windows acepta barra y, por lo tanto, todos los ejemplos de Unix anteriores deberían funcionar. Pero muchas aplicaciones en Windows interpretan una barra para otros propósitos o la tratan como un carácter no válido y, por lo tanto, requieren que ingrese la barra invertida, en particular el shell cmd.exe (a menudo llamado "terminal", ya que normalmente se ejecuta en una ventana de terminal). Tenga en cuenta que muchos otros shells disponibles para Windows, como tcsh y Windows PowerShell , permiten la barra.
Además, "\" no indica una única raíz, sino la raíz del "disco actual". Para indicar un archivo en un disco que no sea el actual, es necesario anteponer una letra de unidad y dos puntos. No se produce ninguna ambigüedad, porque los dos puntos no son un carácter válido en un nombre de archivo de MS-DOS y, por lo tanto, no se puede tener un archivo llamado "A:" en el directorio actual.
Nombres UNC (cualquier ruta que comience con \\? \ ) no admiten barras. [14]
Los siguientes ejemplos muestran rutas de estilo MS-DOS / Windows , con barras invertidas que se utilizan para coincidir con la sintaxis más común:
A: \ Temp \ File.txt
Esta ruta apunta a un archivo con el nombre File.txt , ubicado en el directorio Temp , que a su vez se encuentra en el directorio raíz de la unidad A: .
C: .. \ File.txt
Esta ruta se refiere a un archivo llamado File.txt ubicado en el directorio principal del directorio actual en la unidad C: .
Carpeta \ Subcarpeta \ Archivo.txt
Esta ruta denota un archivo llamado File.txt ubicado en Directorio de subcarpetas que a su vez se encuentra en Carpeta de directorio que se encuentra en el directorio actual de la unidad actual (ya que este ejemplo no proporciona ninguna especificación de unidad).
Archivo.txt
Esta ruta bastante simple apunta a un archivo llamado File.txt
ubicado en el directorio actual (ya que la ruta carece de una especificación de directorio) en la unidad actual (ya que no hay ninguna especificación de unidad presente).
\\. \ COM1
Esta ruta se refiere al primer puerto serie ( COM1 ).
C: \> más < C: /Windows/system.ini
; para compatibilidad con aplicaciones de 16 bits [386Enh] woafont = dosapp.fon EGA80WOA.FON = EGA80WOA.FON EGA40WOA.FON = EGA40WOA.FON CGA80WOA.FON = CGA80WOA.FON CGA40WOA.FON = CGA40WOA.FON ...
Este ejemplo usa una ruta que contiene barras como separador de directorio. El comando redirige el contenido del archivo al morecomando.
E: \> dir "/ Carpeta / Subcarpeta /" / Q El volumen en la unidad E es el número de serie del volumen de datos es 07BE-0B10 Directorio de E: \ Carpeta \ Subcarpeta18 de octubre de 2008 08:15 AM DOMINIO \ usuario.18 de octubre de 2008 08:15 AM DOMINIO \ usuario .. 18 de octubre de 2008 08:15 AM DOMAIN \ usuario Archivo.txt 1 Archivo (s) 8 bytes 2 Dir (s) 19.063.000 bytes libres
Una ruta que contiene barras inclinadas a menudo debe estar rodeada de comillas dobles para eliminar la ambigüedad de los cambios de línea de comando .
- nota: el CD no funciona de esta manera:
El CD "[letra de unidad]: / Archivos de programa" solo funcionará desde el directorio raíz ([letra de unidad]: \). Esto parece tratar todas las barras diagonales de la misma manera que. \. [ cita requerida ]
- excepción: utilice el modificador / D para cambiar la unidad actual además de cambiar el directorio actual de una unidad.
Por ejemplo:
CD "C:. \ Archivos de programa"
funciona igual que
CD "C: / Archivos de programa"
Además, desde una carpeta raíz:
CD "C:. \ Archivos de programa. \ Internet Explorer"
sería tratado de la misma manera que
CD "C: / Archivos de programa / Internet Explorer"
Si no hay una ruta relativa al nombre del directorio especificado con barras diagonales, obtendrá el siguiente error:
El sistema no puede encontrar la ruta especificada.
Para configurar variables de entorno, a veces es necesario proporcionar una ruta que no contenga espacios, por ejemplo, %JAVA_HOME%
definida como "C: \ Archivos de programa \ Java ..." puede hacer que los scripts se detengan cuando encuentran el espacio en la ruta. nombre. Para obtener el nombre de ocho caracteres que Windows asigna a cualquier directorio para la sustitución en las variables de entorno, use el comando de lista de directorios con la opción / x un nivel más arriba del directorio de destino. Por ejemplo, lo siguiente le dará el nombre de ocho caracteres para todos los directorios directamente debajo de la raíz:
C: \> dir / x
Ver también
- Nombre de base
- Archivo de dispositivo
- Dirname
- Sistema de archivos distribuido (DFS)
- Nombre del archivo
- Estándar de jerarquía del sistema de archivos (FHS)
- Nombre de archivo completamente calificado
- RUTA (variable)
- Localizador uniforme de recursos (URL)
Referencias
Este artículo se basa en material extraído del Diccionario de Computación en línea gratuito antes del 1 de noviembre de 2008 e incorporado bajo los términos de "renovación de licencias" de la GFDL , versión 1.3 o posterior.
- ^ Daley, RC; Neumann, PG (1965). "Un sistema de archivos de uso general para almacenamiento secundario". Actas de la AFIPS de la Conferencia Conjunta sobre Computación . Parte I: 213-229. doi : 10.1145 / 1463891.1463915 .
- ^ "Por qué Windows usa barras invertidas y todo lo demás usa barras diagonales" .
- ^ "¿Por qué es el carácter de ruta de DOS ?" .
- ^ "cd" . Comandos de Windows: Windows Server. Microsoft Docs . Consultado el 14 de julio de 2019 .
- ^ Ordenando todo : ¿Cuándo una barra invertida no es una barra invertida?
- ^ "Función DavGetHTTPFromUNCPath" . WebDAV: Windows. Microsoft Docs . serie . Consultado el 14 de julio de 2019 .
- ^ "Formatos de ruta de archivo en sistemas Windows" . E / S de archivos y secuencias: .NET. Microsoft Docs . Consultado el 14 de julio de 2019 .
- ^ "Nombrar archivos, rutas y espacios de nombres: aplicaciones Win32" . docs.microsoft.com .
- ^ "winapi - ¿Hay alguna diferencia entre \ ?? \ y \\? \ rutas?" . Desbordamiento de pila .
- ^ "Prefijos de ruta \ ?? \ y \\? \" . Desbordamiento de pila .
- ^ Definición de UNC por ComputerLanguage.com
- ^ Especificación de resolución de nombre de ruta POSIX
- ^ Definición de nombre de ruta POSIX
- ^ "Nombrar archivos, rutas y espacios de nombres" . Sistemas de archivos locales: Windows. Microsoft Docs . Consultado el 14 de julio de 2019 .
enlaces externos
- Definición de ruta : el proyecto de información de Linux (LINFO)
- Nombrar archivos, rutas y espacios de nombres - Sistemas de archivos locales: Windows: Microsoft Docs