# Ruta (informàtica)

* Aquest article tracta sobre el PATH o ruta de navegació. Si cerqueu la variable utilitzada en programació, vegeu «PATH (informàtica)».
Una ruta o camí d'accés, la forma general del nom d'un fitxer o directori, especifica una ubicació única en un sistema de fitxers. Un camí apunta a una ubicació del sistema de fitxers seguint la jerarquia de l'arbre de directoris expressada en una cadena de caràcters en què els components de la ruta, separats per un caràcter delimitant, representen cada directori. El caràcter de delimitació és més freqüentment la barra inclinada ("/"), la barra invertida ("\") o els dos punts (":"), tot i que alguns sistemes operatius poden utilitzar un delimitador diferent. Les rutes s’utilitzen àmpliament en informàtica per representar les relacions directori-fitxer habituals en els sistemes operatius moderns, i són essencials en la construcció d’un localitzador uniforme de recursos (URL). Els recursos es poden representar amb rutes absolutes o relatives.

## Història

A mitjans de la dècada de 1960, el sistema operatiu Multics va introduir per primera vegada un sistema de fitxers jeràrquic amb directoris (separats per ">").
Cap al 1970, Unix va introduir el caràcter barra ("/") com a separador de directoris.
El 1981 es va publicar la primera versió de Microsoft DOS. El MS-DOS 1.0 no admetia els directoris de fitxers. A més, una part important de les ordres dins de MS-DOS 1.0 provenien d'IBM i la seva sintaxi de línia d'ordres utilitzava el caràcter barra com a prefix de "commutador". Per exemple, dir /w executa l'ordre dir amb l'opció de format de llista ampla.
Aquest ús de barra encara es pot trobar a l'indicador d’ordres de Microsoft Windows. Per contra, Unix utilitza el caràcter guió ("-") com a prefix de commutador de línia d'ordres.
Quan es va afegir l'ús de directoris a MS-DOS a la versió 2.0, "/" es va mantenir com a caràcter de prefix de commutador per a la compatibilitat amb versions anteriors. Microsoft va triar el caràcter de barra invertida ("\") com a separador de directoris, que té un aspecte similar al caràcter de barra, tot i que les versions més modernes de Windows permeten barrejar els dos tipus de barres en una mateixa ruta indistintament.

## Rutes absolutes i relatives

Una ruta d'accés absoluta o completa apunta a la mateixa ubicació en un sistema de fitxers, independentment del directori de treball actual. Per fer-ho, ha d'incloure el directori arrel.
Per contra, una ruta relativa comença des d’un directori de treball determinat, evitant la necessitat de proporcionar la ruta absoluta completa. Un nom de fitxer es pot considerar com un camí d'accés relatiu basat en el directori de treball actual. Si el directori de treball no és el directori principal del fitxer, es produirà un missatge d'error de fitxer no trobat si el fitxer es crida pel seu nom.

## Representacions de rutes per sistema operatiu i indicadors d'ordres

| Sistema operatiu | Shell (indicador d'ordres) | Directori arrel | Directory separator | Current directory | Parent directory | Home directory | Examples |
| Unix-like OS (incl. macOS) | Unix shell | / | / | . | .. | ~ | /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]\ | / or \ | . | .. | | C:\user\docs\Letter.txt A:Picture.jpg \\SERVER01\USER\docs\Letter.txt |
| Microsoft Windows | cmd.exe | \ (en relació amb l'arrel de l'actual directori de treball) o [drive_letter]:\ o \\[server]\[sharename]\ o \\?\[drive_spec]:\ o \\?\[server]\[sharename]\ o \\?\UNC\[server]\[sharename]\ o \\.\[physical_device]\ | / or \ | . | .. | | 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 |
| Microsoft Windows | Windows PowerShell | [drive letter:]/ o [drive name:]\o \\[server name]\ o [PSSnapIn name]\[PSProvider name:][:PSDrive root] | / or \ | . | .. | ~ | 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\ |
| TOPS-20 | DCL | [device name:] | . | | | | PS:<USER.DOCS>LETTER.TXT,4 |
| RSX-11 | MCR | [device name:] | | | | | DR0:[30,12]LETTER.TXT;4 |
| OpenVMS | DCL | [device name:][000000] o [NODE["accountname password"]]::[device name][000000]: | . | | [-] | SYS$LOGIN: | SYS$SYSDEVICE:[USER.DOCS]PHOTO.JPGIN_THIS_DIR.COM; [-.-]GreatGrandParent.TXT SYS$SYSDEVICE:[.DRAFTS]LETTER.TXT;4 GEIN::[000000]LETTER.TXT;4 SYS$LOGIN:LOGIN.COM |
| Classic Mac OS | | [volume or drive name]: | : | : | :: | | Macintosh HD:Documents:Letter :fileincurrentdir ::fileinparent :::fileingrandparent |
| ProDOS | AppleSoft BASIC | /[volume or drive name]/ | / | | | | /SCHOOL.DISK/APPLEWORKS/MY.REPORT FLIGHT.SIMULATOR,D2 |
| AmigaOS | Amiga CLI / AmigaShell | [drive, volume, device or assign name]: | / | "" (empty string) | / | | Workbench:Utilities/MultiView DF0:S/Startup-Sequence S:Startup-Sequence TCP:en.wikipedia.com/80 |
| RISC OS | ShellCLI | [fs type[#option]:][:drive number or disc name.]$ nota: &, % i @ també poden ser utilitzats per referir-se a l'arrel de l'usuari actual, la biblioteca i l'actual director de treball, respectivament. | . | @ | ^ | & | ADFS::MyDrive.$.Documents.Letter Net#MainServer::DataDrive.$.Main.sy10823 LanMan::WindowsC.$.Pictures.Japan/gif NFS:&.!Choices ADFS:%.IfThere @.inthisdir ^.^.greatgrandparent When filesystems with filename extensions are mounted, '.' characters are changed to '/', as in the Japan/gif example above. |
| Symbian OS | File manager | \ | \ | | | | \user\docs\Letter.txt |
| Domain/OS | Shell | // (arrel de domini) / (arrel del node actual) | / | . | \ | ~ | //node/home/user/docs/Letter.txt ./inthisdir \\greatgrandparent ~rcinfo |
| MenuetOS | CMD | / | / | | | | |
| Stratus VOS | VOS command-line interpreter | %[system_name]#[module_name]> | > | | < | | %sysname#module1>SubDir>AnotherDir |
| NonStop<br id="mwAe0"><br>Kernel | TACL Tandem Advanced Command Language | Sense arrel | . | | no parent directory | | \NODE.$DISK.SUBVOL.FILE \NODE.$DEVICE \NODE.$DEVICE.#SUBDEV.QUALIFIER |
| CP/M | CCP | [drive letter:] | no directory support, just user areas 0–F | no directory support, just user areas 0–F | no directory support, just user areas 0–F | no directory support, just user areas 0–F | A:LETTER.TXT |
| GS/OS | | :[volume name]: or .[device name]: or [prefix]: nota: el prefix pot ser un número (0-31), * (volum d’arrencada) o @ (directori inicial AppleShare) | : or / | | | @ | :Apps:Platinum.Paint:Platinum.Paint *:System:Finder .APPLEDISK3.5B/file |
Les versions japoneses i coreanes de Windows solen mostrar el caràcter ' ¥ ' o el caràcter ' ₩ ' en lloc del separador de directoris. En aquests casos, el codi d'una barra invertida s'està dibuixant com a caràcter. Les versions molt primerenques de MS-DOS van substituir la barra invertida per aquests glifs a la pantalla per fer possible la visualització per programes que només entenien ASCII de 7 bits (també es van substituir altres caràcters, com ara claudàtors, consulteu ISO 646, Windows Codepage 932 (Japanese Shift JIS) i Codepage 949 (coreà)). Tot i que fins i tot la primera versió de Windows admetia el conjunt de caràcters ISO-8859-1 de 8 bits que té el signe Yen a U+00A5, i les versions modernes de Windows admeten Unicode que té el signe Won a U+20A9, continuarà la gran quantitat de programari per mostrar barres invertides que es troben als fitxers ASCII d'aquesta manera per preservar la compatibilitat amb les versions posteriors.
Mac OS X, com a evolució d'UNIX, utilitza camins UNIX internament. Tanmateix, per preservar la compatibilitat del programari i la familiaritat dels usuaris, moltes parts del commutador GUI "/" teclejades per l'usuari, passen a ":" internament, i tornen a canviar-se quan es mostren els noms de fitxer (a ":" introduït per l'usuari també es canvia a "/" però la traducció inversa no passa).

## Les rutes en els llenguatges de programació

Els llenguatges de programació també utilitzen rutes. Per exemple: quan s’obre un fitxer. La majoria dels llenguatges de programació utilitzen la representació de camins del sistema operatiu subjacent:
Aquest accés directe als camins del sistema operatiu pot dificultar la portabilitat dels programes. Per facilitar la portabilitat Java utilitza File.separator per distingir entre "/" i "\" per separar rutes. Seed7 té un enfocament diferent per a la representació de la ruta. A Seed7 tots els camins utilitzen la convenció de camins Unix, independentment del sistema operatiu. Sota Windows es produeix un mapatge (per exemple: la ruta /c/users esdevé c:\users).

## Universal Naming Convention

La UNC de Microsoft Windows, abreviatura de Universal Naming Convention o Uniform Naming Convention, especifica una sintaxi comuna per descriure la ubicació d’un recurs de xarxa, com ara un fitxer compartit, un directori o una impressora. La sintaxi UNC per als sistemes Windows té la forma genèrica:
Microsoft sovint es refereix a això com una "ruta de xarxa".
Algunes interfícies de Microsoft Windows també permeten o requereixen la sintaxi UNC per a l'accés compartit de WebDAV, en lloc d'una URL. La sintaxi UNC s’amplia amb components opcionals per indicar l’ús del número de port SSL i TCP/IP, una ruta WebDAV de http[s]://HostName[:Port]/SharedFolder/Resource es converteix en
Quan es visualitza de forma remota, el "SharedFolder" pot tenir un nom diferent del que veu un programa del servidor en obrir "\SharedFolder". En lloc seu, el nom de SharedFolder consisteix en un nom arbitrari assignat a la carpeta quan es defineix el seu "ús compartit".
Algunes interfícies de Microsoft Windows també accepten el "Long UNC":
Microsoft Windows utilitza els tipus de rutes següents:
* sistema de fitxers local (LFS), com ara C:\File
* convenció de noms universals (UNC), com ara \\Server\Volume\File o /<nom del recurs d'internet>[\nom del directori] (almenys a Windows 7 i versions posteriors)
* ruta de dispositiu "llarga", com ara \\?\C:\File o \\?\UNC\Server\Volume\File. Aquesta ruta apunta a l'espai de noms de fitxers locals "\\". "\" és semblant i apunta a l'espai de noms del dispositiu DOS local. Aquest format també és la ruta "crua" o "no interpretada", ja que envia rutes directament al sistema de fitxers sense convertir "/" a "\" i interpretant noms com "..".
* Gestor d'objectes del Windows NT "\\??\" -rutes prefixades (espai de noms DOS general).
Com que les UNC comencen amb dues barres invertides i la barra invertida també s'utilitza en expressions regulars, això pot donar lloc a casos extrems on una expressió regular coincideixi amb una UNC que comenci amb 8 barres invertides -"\\\\\\\\"- perquè la cadena i l'expressió regular ho requereixen. Això es pot simplificar mitjançant l'ús de cadenes predefinides estàndard, que són diferents per cada llenguatge de programació.

## Referències

* ↑ Daley, R.C.; Neumann, P.G. AFIPS Proceedings of the Joint Computer Conference, Part I, 1965, pàg. 213–229. DOI: 10.1145/1463891.1463915.
* ↑ «Why Windows Uses Backslashes and Everything else Uses Forward Slashes».
* ↑ «Why is the DOS path character ?».
* ↑ «cd». Microsoft Docs. [Consulta: 14 juliol 2019].
* ↑ Sorting it all Out: When is a backslash not a backslash?
* ↑ «DavGetHTTPFromUNCPath function». Microsoft Docs. [Consulta: 14 juliol 2019].
* ↑ «File path formats on Windows systems». Microsoft Docs. [Consulta: 14 juliol 2019].
* ↑ «Naming Files, Paths, and Namespaces - Win32 apps» (en anglès americà). docs.microsoft.com.
* ↑ «winapi - Is there a difference between \??\ and \\?\ paths?». Stack Overflow.
* ↑ «Path prefixes \??\ and \\?\». Stack Overflow.

## Bibliografia

Aquest article es basa en material extret del Free On-line Dictionary of Computing abans de l'1 de novembre de 2008 i incorporat sota els termes de "relicensing" de la GFDL, versió 1.3 o posterior.

## Vegeu també

* Fitxer del dispositiu
* Estàndard de jerarquia del sistema de fitxers (FHS)
* PATH (variable)
* Localitzador uniforme de recursos (URL)

## Enllaços externs

* Definició de ruta: The Linux Information Project (LINFO)
* Anomenar fitxers, rutes i espais de noms: sistemes de fitxers locals : Windows : Documents de Microsoft