Ruta (informática)

Una ruta (o ruta de archivo , ruta de archivo , nombre de ruta o similar) es una cadena de caracteres que se utiliza para identificar de forma única una ubicación en una estructura de directorio . Se compone siguiendo la jerarquía del árbol de directorios en el que los componentes, separados por un carácter delimitador, representan cada directorio. El carácter delimitador suele ser la barra diagonal ("/"), la barra 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 los años 1960. [1]

Alrededor de 1970, Unix introdujo el carácter de barra diagonal ("/") 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 utilidad empaquetados con MS-DOS 1.0 procedían de IBM y su sintaxis de línea de comandos utilizaba el carácter de barra diagonal como prefijo de "cambio". Por ejemplo, dir /wejecuta el dircomando con la opción de formato de lista amplia.

Este uso de barra diagonal todavía se puede encontrar en la interfaz de comandos de Microsoft Windows . Por el contrario, Unix utiliza el carácter guión ("-") como prefijo de cambio de línea de comandos.

Cuando se agregó compatibilidad con directorios a MS-DOS en la versión 2.0, "/" se mantuvo como carácter de prefijo de cambio para compatibilidad con versiones anteriores. Microsoft eligió el carácter de barra invertida ("\") como separador de directorio, que se parece al carácter de barra diagonal, aunque las versiones más modernas de Windows son independientes de las barras, lo que permite la combinación de ambos tipos de barras 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 ello, 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 a él.

URL base

Una URL base es la parte consistente de una ruta API, a la que se agregan rutas de punto final.

Representaciones de rutas por sistema operativo y shell.


Sistema operativo
Caparazón
Directorio raíz

Separador de directorios

Directorio actual

Directorio de padres

Directorio de inicio
Ejemplos
Sistema operativo tipo Unix
(incluido macOS )
shell Unix / / . .. ~ /home/user/docs/Letter.txt
./inthisdir
../../greatgrandparent
~/.rcinfo
DOS COMANDO.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
o [drive_letter]:\
o o 4]\\[server]\[sharename]\
\\?\[drive_spec]:\
\\?\UNC\[server]\[sharename]\
\\.\[physical_device]\
/o \,

La edición japonesa usa ¥, la versión coreana usa ₩ como separador de ruta

. ..[5] 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
WindowsPowerShell [drive letter:]/o [drive name:]\o o
\\[server name]\

[PSSnapIn name]\[PSProvider name:][:PSDrive root]

/o\ . .. ~ C:\user\docs\Letter.txt
C:\user/docs\Letter.txt
\\Server01\user\docs\Letter.txt
cd ~\Desktop

UserDocs:/Letter.txt
Variable:PSVersionTable
Registry::HKEY_LOCAL_MACHINE\SOFTWARE\
Microsoft.PowerShell.Security\Certificate::CurrentUser\

TOP-20 DCL [device name:] . PS:<USER.DOCS>LETTER.TXT,4
RSX-11 MCR [device name:] DR0:[30,12]LETTER.TXT;4
AbiertoVMS DCL [device name:][000000]o

[NODE["accountname password"]]::[device name][000000]:

. [] [-] SYS$LOGIN: SYS$SYSDEVICE:[USER.DOCS]PHOTO.JPG

[]IN_THIS_DIR.COM;
[-.-]GreatGrandParent.TXT
SYS$SYSDEVICE:[.DRAFTS]LETTER.TXT;4
GEIN::[000000]LETTER.TXT;4
SYS$LOGIN:LOGIN.COM


SO clásico de Mac
[volume or drive name]: : : :: Macintosh HD:Documents:Letter
:fileincurrentdir
::fileinparent
:::fileingrandparent
ProDOS AppleSoft BÁSICO /[volume or drive name]/ / /SCHOOL.DISK/APPLEWORKS/MY.REPORT

FLIGHT.SIMULATOR,D2

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
SO RISC ShellCLI [fs type[#option]:][:drive number or disc name.]$

nota: &, % y @ también se pueden utilizar para hacer referencia a la raíz
del usuario actual, la biblioteca y el directorio actual (de trabajo), respectivamente.

. @ ^ & 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,
'.' Los caracteres se cambian a '/', como en el ejemplo de Japón/gif anterior.

Sistema operativo Symbian Administrador de archivos \ \ \user\docs\Letter.txt
Dominio/SO Caparazón

//(raíz del dominio)
/(raíz del nodo actual)

/ . \ ~ //node/home/user/docs/Letter.txt
./inthisdir
\\greatgrandparent
~rcinfo
MenuetOS CMD / /
Estrato VOS
Intérprete de línea de comandos VOS
%[system_name]#[module_name]> > < %sysname#module1>SubDir>AnotherDir

Núcleo sin parar
Lenguaje de comando avanzado TACL
Tandem
Sin raíz . sin
directorio principal
\NODE.$DISK.SUBVOL.FILE
\NODE.$DEVICE
\NODE.$DEVICE.#SUBDEV.QUALIFIER
CP/M PCC [drive letter:] sin soporte de directorio, solo áreas de usuario 0–F A:LETTER.TXT
SG/OS :[volume name]:o .[device name]:o[prefix]:

nota: el prefijo puede ser un número (0–31), *(volumen de inicio) o @(directorio de inicio de AppleShare)

: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 para 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 fuera 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 (JIS de cambio japonés) y página de códigos 949 (coreano)). Aunque incluso la primera versión de Windows admitía el juego de caracteres ISO-8859-1 de 8 bits que tiene el signo Yen en U+00A5, y las versiones modernas de Windows admiten Unicode , que tiene el signo Won en U+20A9, gran parte del software continuará para mostrar las barras invertidas que se encuentran en los archivos ASCII de esta manera para preservar la compatibilidad con versiones anteriores. [6]

Mac OS X , como derivado de UNIX, utiliza rutas UNIX internamente. Sin embargo, para preservar la compatibilidad del software y la familiaridad de los usuarios, muchas partes de la GUI cambian "/" ingresado por el usuario a ":" internamente y los vuelven a cambiar cuando se muestran los nombres de archivos (un ":" ingresado por el usuario también se cambia en "/" pero la traducción inversa no ocurre).

Caminos en lenguajes de programación.

Los lenguajes de programación también utilizan rutas. Por ejemplo: cuando se abre un archivo. La mayoría de los lenguajes de programación utilizan la representación de 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 utiliza File.separator para distinguir entre rutas separadas / y \. Seed7 tiene un enfoque diferente para la representación de la ruta. En Seed7 todas las rutas utilizan la convención de rutas Unix, independientemente del sistema operativo. En Windows se realiza una asignación (por ejemplo: la ruta /c/users se asigna 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:

\\NombreEquipo\CarpetaCompartida\Recurso

Microsoft a menudo se refiere a esto como " ruta de red ".

Algunas interfaces de Microsoft Windows también permiten o requieren sintaxis UNC para el acceso compartido WebDAV , en lugar de una URL. La sintaxis UNC se amplía [7] con componentes opcionales para indicar el uso de SSL y el número de puerto TCP/IP, una URL WebDAV se http[s]://HostName[:Port]/SharedFolder/Resourceconvierte en

\\Nombre de host[@SSL][@Puerto]\Carpeta compartida\Recurso

Cuando se ve de forma remota, la "Carpeta compartida" puede tener un nombre diferente del que ve un programa en el servidor al abrir "\Carpeta compartida". En cambio, el nombre SharedFolder consiste en un nombre arbitrario asignado a la carpeta al definir su "compartición".

Algunas interfaces de Microsoft Windows también aceptan el "UNC largo":

\\?\UNC\NombreEquipo\CarpetaCompartida\Recurso

Microsoft Windows utiliza los siguientes tipos de rutas:

  • sistema de archivos local (LFS), comoC:\File
  • convención de nomenclatura universal (UNC), como \\Server\Volume\Fileo / <internet resource name>[\Directory name](al menos en Windows 7 y posteriores)
  • Ruta de dispositivo "larga" como \\?\C:\Fileo \\?\UNC\Server\Volume\File. [8] Esta ruta apunta al espacio de nombres del archivo local y \\.\es similar a la 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 \ ni interpretar nombres como ... [4]
  • Administrador de objetos de Windows NT: \\??\ rutas con prefijo (espacio de nombres global de DOS). [9] [10]

En versiones de Windows anteriores a Windows XP, sólo las API que aceptaban 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 rutas de hasta 248 caracteres. [ cita necesaria ]

Dado que los UNC comienzan con dos barras invertidas, y la barra invertida también se usa para escapar de cadenas y en expresiones regulares , esto puede resultar en casos extremos del síndrome del palillo inclinado : una cadena de escape 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 escape. Esto se puede simplificar usando cadenas sin formato , como en C# @"\\\\"o Python r'\\\\', o expresiones literales regulares, como en Perl qr{\\\\}.

Definición de nombre de ruta POSIX

La mayoría de los sistemas tipo Unix utilizan una sintaxis similar. [11] POSIX permite tratar una ruta que comienza con dos barras diagonales de una manera definida por la implementación, [12] aunque en otros casos los sistemas deben tratar varias barras diagonales como barras simples. [13] Muchas aplicaciones en sistemas tipo Unix (por ejemplo, scp , rcp y rsync ) utilizan definiciones de recursos como:

nombre de host:/rutadeldirectorio/recurso

o esquemas de URI con el nombre del servicio (aquí 'smb'):

smb://nombredehost/rutadirectorio/recurso

Ejemplo

estilo Unix

El siguiente ejemplo resuelto analiza el comportamiento de un sistema de archivos estilo Unix tal 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:

/usuarios/mark/bobapples

En ese momento, la ruta relativa al directorio deseado se puede representar como:

./bobapples

o para abreviar:

bobapples

y la ruta absoluta para el directorio como:

/usuarios/mark/bobapples

Dado bobapples como la ruta relativa al directorio deseado, se puede escribir lo siguiente en el símbolo del sistema para cambiar el directorio de trabajo actual a bobapples:

bobapples
 cd

Dos puntos (" .. ") apuntan hacia arriba en la jerarquía , para indicar el directorio principal ; un punto (" . ") representa el directorio actual. Ambos pueden ser componentes de una ruta relativa compleja (por ejemplo, " ../mark/./bobapples "), donde " . " solo o como primer componente de dicha ruta relativa representa el directorio de trabajo . (Usar " ./foo " para referirse a un archivo " foo " en el directorio de trabajo actual a veces puede ser útil para distinguirlo de un recurso " foo " que se encuentra en un directorio predeterminado o por otros medios; por ejemplo, para ver un archivo específico versión de una página de manual en lugar de la instalada en el sistema.)

Estilo MS-DOS/Microsoft Windows

Captura de pantalla de un shell de comandos de Windows que muestra nombres de archivos en un directorio

Contrariamente a la creencia popular, la API del sistema Windows acepta barras diagonales 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 una 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 diagonal.

Además "\" no indica una única raíz, sino la raíz del "disco actual". Para indicar un archivo en un disco distinto del actual es necesario anteponer una letra de unidad y dos puntos. No surge ninguna ambigüedad, porque los dos puntos no son un carácter válido en un nombre de archivo MS-DOS y, por lo tanto, no se puede tener un archivo llamado "A:" en el directorio actual.

Los nombres UNC (cualquier ruta que comience con \\?\ ) no admiten barras. [4]

Los siguientes ejemplos muestran rutas de estilo MS-DOS / Windows , con barras invertidas utilizadas para coincidir con la sintaxis más común:

A:\Temp\Archivo.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:..\Archivo.txt

Esta ruta hace referencia a un archivo llamado File.txt ubicado en el directorio principal del directorio actual en la unidad C :.

Carpeta\Subcarpeta\Archivo.txt

Esta ruta indica un archivo llamado File.txt ubicado en el directorio SubFolder que a su vez se encuentra en el directorio Folder 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.txtubicado 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 utiliza 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\SubCarpeta

18 de octubre de 2008 08:15 a. m. <DIR> DOMINIO\usuario.
18 de octubre de 2008 08:15 AM <DIR> DOMINIO\usuario ..
 18 de octubre de 2008 08:15 AM <DIR> DOMINIO\usuario Archivo.txt
                1 Archivo(s) 8 bytes 
               2 Director(es) 19.063.000 bytes libres

Una ruta que contiene barras diagonales a menudo debe estar entre comillas dobles para eliminar la ambigüedad de los cambios de la línea de comandos .

  • 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 necesaria ]

  • 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 igual 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:\Program Files\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 sustituirlo en las variables de entorno, utilice el comando de listado de directorios con la opción /x un nivel por encima del directorio de destino. Por ejemplo, lo siguiente le proporcionará el nombre de ocho caracteres para todos los directorios directamente bajo la raíz:

C:\> directorio /x

Ver también

Referencias

  1. ^ Daley, RC; Neumann, PG (1965). "Un sistema de archivos de uso general para almacenamiento secundario". Actas de la conferencia informática conjunta de otoño del 30 de noviembre al 1 de diciembre de 1965, Parte I sobre XX - AFIPS '65 (otoño, parte I) . vol. Parte I, págs. 213–229. doi : 10.1145/1463891.1463915 . S2CID  16236414.
  2. ^ "Por qué Windows usa barras invertidas y todo lo demás usa barras diagonales". 10 de febrero de 2014.
  3. ^ "¿Por qué el carácter de ruta de DOS ""?". 24 de junio de 2005.
  4. ^ abc "Nombrar archivos, rutas y espacios de nombres". Documentos de Microsoft . 15 de diciembre de 2022.
  5. ^ "disco compacto". Comandos de Windows: Servidor de Windows. Documentos de Microsoft . 3 de febrero de 2023 . Consultado el 4 de octubre de 2023 .
  6. ^ "¿Cuándo una barra invertida no es una barra invertida?". Ordenándolo todo .
  7. ^ "Función DavGetHTTPFromUNCPath". WebDAV: Windows. Documentos de Microsoft . serie. 13 de octubre de 2021 . Consultado el 4 de octubre de 2023 .
  8. ^ "Formatos de ruta de archivo en sistemas Windows". E/S de archivos y transmisiones: .NET. Documentos de Microsoft . Consultado el 14 de julio de 2019 .
  9. ^ "winapi: ¿hay alguna diferencia entre las rutas \??\ y \\?\?". Desbordamiento de pila .
  10. ^ "Prefijos de ruta \??\ y \\?\". Desbordamiento de pila .
  11. ^ "Definición UNC". ComputerLanguage.com .
  12. ^ "Especificación de resolución de nombre de ruta POSIX".
  13. ^ "Definición de nombre de ruta POSIX".

enlaces externos

  • Definición de ruta: Proyecto de información de Linux (LINFO)
  • Nombrar archivos, rutas y espacios de nombres: sistemas de archivos locales: Windows: Microsoft Docs
Retrieved from "https://en.wikipedia.org/w/index.php?title=Path_(computing)&oldid=1188930418"