Vés al contingut

Ruta (informàtica)

De la Viquipèdia, l'enciclopèdia lliure
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

[modifica]

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 ">").[1]

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.[2][3]

Rutes absolutes i relatives

[modifica]

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

[modifica]
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]\
\\?\UNC\[server]\[sharename]\
o \\.\[physical_device]\
/ or \ . ..[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
\\[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.JPG

[]IN_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 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.[5]

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ó

[modifica]

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:

uxFile = fopen("project/readme.txt", "r")
winFile = fopen("C:\\Program Files\\bin\\config.bat", "r")

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

[modifica]

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:

\\ComputerName\SharedFolder\Resource

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[6] amb components opcionals per indicar l’ús del número de port SSL i TCP/IP, una ruta WebDAV de [enllaç sense format] http[s]://HostName[:Port]/SharedFolder/Resource es converteix en

\\HostName[@SSL][@Port]\SharedFolder\Resource

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":

\\?\UNC\ComputerName\SharedFolder\Resource

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.[7] 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 "..".[8]
  • Gestor d'objectes del Windows NT "\\??\" -rutes prefixades (espai de noms DOS general).[9][10]

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

[modifica]
  1. 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.
  2. «Why Windows Uses Backslashes and Everything else Uses Forward Slashes».
  3. «Why is the DOS path character ?».
  4. «cd». Microsoft Docs. [Consulta: 14 juliol 2019].
  5. Sorting it all Out: When is a backslash not a backslash?
  6. «DavGetHTTPFromUNCPath function». Microsoft Docs. [Consulta: 14 juliol 2019].
  7. «File path formats on Windows systems». Microsoft Docs. [Consulta: 14 juliol 2019].
  8. «Naming Files, Paths, and Namespaces - Win32 apps» (en anglès americà). docs.microsoft.com.
  9. «winapi - Is there a difference between \??\ and \\?\ paths?». Stack Overflow.
  10. «Path prefixes \??\ and \\?\». Stack Overflow.

Bibliografia

[modifica]

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é

[modifica]

Enllaços externs

[modifica]