Sökväg (dator) - Path (computing)
En väg är en sträng av tecken som används för att identifiera en plats i en katalogstruktur . Den består av att följa katalogträdets hierarki där komponenter, separerade med ett avgränsande tecken, representerar varje katalog. Det avgränsande tecknet är oftast snedstrecket ("/"), snedstrecket ("\") eller kolon (":"), även om vissa operativsystem kan använda en annan avgränsare . Sökvägar används i stor utsträckning inom datavetenskap för att representera de katalog/filrelationer som är vanliga i moderna operativsystem och är viktiga vid konstruktionen av Uniform Resource Locators (URL: er). Resurser kan representeras av antingen absoluta eller relativa vägar .
Historia
Multics introducerade först ett hierarkiskt filsystem med kataloger (separerade med ">") i mitten av 1960-talet.
Runt 1970 introducerade Unix snedstreckstecknet ("/") som dess katalogseparator.
1981 släpptes den första versionen av Microsoft DOS . MS-DOS 1.0 stödde inte filkataloger. En stor del av verktygskommandona som är förpackade med MS-DOS 1.0 kom också från IBM och deras kommandorads syntax använde snedstrecket som ett "switch" -prefix. Exempelvis dir /w
körs dir
kommandot med alternativet vid bred lista.
Denna användning av snedstreck kan fortfarande hittas i kommandogränssnittet under Microsoft Windows . Däremot använder Unix bindestrecket ("-") som ett prefix för kommandoradsväxlar.
När katalogstöd lades till i MS-DOS i version 2.0, behölls "/" som växelprefixstecken för bakåtkompatibilitet. Microsoft valde backslash-tecknet ("\") som en katalogseparator, som liknar snedstrecket, även om en mer modern version av Windows är snedstreck-agnostisk, vilket möjliggör blandning av båda typerna av snedstreck i en sökväg.
Absoluta och relativa vägar
En absolut eller fullständig sökväg pekar på samma plats i ett filsystem, oavsett den aktuella arbetskatalogen . För att göra det måste den innehålla rotkatalogen .
Däremot startar en relativ sökväg från en given arbetskatalog, vilket undviker behovet av att tillhandahålla hela den absoluta vägen. Ett filnamn kan betraktas som en relativ sökväg baserad på den aktuella arbetskatalogen. Om arbetskatalogen inte är filens överordnade katalog , uppstår ett fel som inte hittas om filen adresseras med dess namn.
Representationer av vägar efter operativsystem och skal
Rörelse systemet |
Skal | root Directory |
Directory separator |
Nuvarande katalog |
Parent Directory |
Home katalog |
Exempel |
---|---|---|---|---|---|---|---|
Unix-liknande operativsystem (inkl. MacOS ) |
Unix skal |
/
|
/
|
.
|
..
|
~
|
/home/user/docs/Letter.txt ./inthisdir ../../greatgrandparent ~/.rcinfo
|
DOS | COMMAND.COM |
[drive letter:]\ eller \\[server name]\[volume]\
|
\
|
.
|
..
|
C:\USER\DOCS\LETTER.TXT A:PICTURE.JPG \\SERVER01\USER\DOCS\LETTER.TXT
|
|
OS/2 | cmd.exe |
[drive letter:]\ eller \\[server name]\[volume]\
|
/ eller \
|
.
|
..
|
C:\user\docs\Letter.txt A:Picture.jpg \\SERVER01\USER\docs\Letter.txt
|
|
Microsoft Windows |
cmd.exe |
\ (i förhållande till den nuvarande rotkatalogen för arbetskatalogen)eller [drive_letter]:\ eller eller eller eller eller \\[server]\[sharename]\ \\?\[drive_spec]:\ \\?\[server]\[sharename]\ \\?\UNC\[server]\[sharename]\ \\.\[physical_device]\ |
/ eller \
|
.
|
..
|
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:]/ eller [drive name:]\ eller eller\\[server name]\
|
/ eller \
|
.
|
..
|
~
|
C:\user\docs\Letter.txt C:\user/docs\Letter.txt \\Server01\user\docs\Letter.txt cd ~\Desktop
|
|
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] eller
|
.
|
[]
|
[-]
|
SYS$LOGIN:
|
SYS$SYSDEVICE:[USER.DOCS]PHOTO.JPG
|
Klassiskt 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
|
|||
AmigaOS | Amiga CLI / AmigaShell |
[drive, volume, device or assign name]:
|
/
|
"" (tom sträng) |
/
|
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.]$
Obs! &, % och @ kan också användas för att referera till roten |
.
|
@
|
^
|
&
|
ADFS::MyDrive.$.Documents.Letter Net#MainServer::DataDrive.$.Main.sy10823 LanMan::WindowsC.$.Pictures.Japan/gif NFS:&.!Choices ADFS:%.IfThere @.inthisdir ^.^.greatgrandparent
När filsystem med filnamnstillägg är monterade, |
Symbian OS | Filhanterare |
\
|
\
|
\user\docs\Letter.txt
|
|||
Domän/OS | Skal |
|
/
|
.
|
\
|
~
|
//node/home/user/docs/Letter.txt ./inthisdir \\greatgrandparent ~rcinfo
|
MenuetOS | CMD |
/
|
/
|
||||
Stratus VOS | VOS kommandoraden tolk |
%[system_name]#[module_name]>
|
>
|
<
|
%sysname#module1>SubDir>AnotherDir
|
||
NonStop -kärna |
TACL Tandem Advanced Command Language |
Ingen rot |
.
|
ingen överordnad katalog |
\NODE.$DISK.SUBVOL.FILE \NODE.$DEVICE \NODE.$DEVICE.#SUBDEV.QUALIFIER
|
||
CP/M | KKP |
[drive letter:]
|
inget katalogstöd, bara användarområden 0 – F |
A:LETTER.TXT
|
|||
GS/OS |
:[volume name]: eller .[device name]: eller[prefix]:
Obs: prefixet kan vara ett tal (0–31), |
: eller /
|
@
|
:Apps:Platinum.Paint:Platinum.Paint *:System:Finder .APPLEDISK3.5B/file
|
Japanska och koreanska versioner av Windows kan ofta visa " ¥ " -tecknet eller " ₩ " -tecknet istället för katalogseparatorn. I sådana fall dras koden för ett snedstreck som dessa tecken. Mycket tidiga versioner av MS-DOS ersatte snedstrecket med dessa tecken på displayen för att göra det möjligt att visa dem med program som bara förstod 7-bitars ASCII (andra tecken som hakparenteser ersattes också, se ISO 646 , Windows Codepage 932 (Japanese Shift JIS) och Codepage 949 (Korean) ). Även om den första versionen av Windows stöder 8-bitars ISO-8859-1- teckenuppsättningen som har Yen-tecknet vid U+00A5 och moderna versioner av Windows stöder Unicode som har Won-tecknet på U+20A9, kommer mycket programvara att fortsätta att visa backslash som finns i ASCII -filer på detta sätt för att bevara bakåtkompatibilitet.
Mac OS X , som ett derivat av UNIX, använder UNIX -sökvägar internt. För att bevara kompatibiliteten för programvara och bekantskap för användare ändras dock många delar av GUI -omkopplaren "/" av användaren till ":" internt och byter tillbaka dem när filnamn visas (ett ":" som användaren har angett ändras också till "/" men omvänd översättning sker inte).
Vägar i programmeringsspråk
Programmeringsspråk använder också vägar. Ex: När en fil öppnas. De flesta programmeringsspråk använder sökvägsrepresentationen för det underliggande operativsystemet:
uxFile = fopen("project/readme.txt", "r")
winFile = fopen("C:\\Program Files\\bin\\config.bat", "r")
Denna direktåtkomst till operativsystemets sökvägar kan hindra överföringen av program. För att stödja bärbara program använder Java File.separator för att skilja mellan / och \ separerade sökvägar. Seed7 har ett annat tillvägagångssätt för vägrepresentationen. I Seed7 använder alla sökvägar Unix -bankonventionen, oberoende av operativsystemet. Under fönster sker en kartläggning (t.ex.: Sökvägen /c /användare mappas till c: \ användare ).
Universal Naming Convention
Microsoft Windows UNC , kort för Universal Naming Convention eller Uniform Naming Convention , anger en gemensam syntax för att beskriva platsen för en nätverksresurs, till exempel en delad fil, katalog eller skrivare. UNC -syntaxen för Windows -system har den generiska formen:
\\ComputerName\SharedFolder\Resource
Microsoft hänvisar ofta till detta som en " nätverkssökväg ".
Vissa Microsoft Windows -gränssnitt tillåter eller kräver UNC -syntax för WebDAV -åtkomst snarare än en URL. UNC -syntaxen utökas med valfria komponenter för att beteckna användning av SSL- och TCP/IP -portnummer, en WebDAV -URL http[s]://HostName[:Port]/SharedFolder/Resource
blir
\\HostName[@SSL][@Port]\SharedFolder\Resource
När det ses på distans kan "SharedFolder" ha ett annat namn än vad ett program på servern ser när "\ SharedFolder" öppnas. I stället består SharedFolder -namnet av ett godtyckligt namn som tilldelas mappen när dess "delning" definieras.
Vissa Microsoft Windows -gränssnitt accepterar också "Long UNC":
\\?\UNC\ComputerName\SharedFolder\Resource
Microsoft Windows använder följande typer av sökvägar:
- lokalt filsystem (LFS), t.ex.
C:\File
- Universal Naming Convention (UNC), t.ex.
\\Server\Volume\File
eller /<internet resource name>[\Directory name]
(åtminstone i Windows 7 och senare) - "lång" enhetsväg som
\\?\C:\File
eller\\?\UNC\Server\Volume\File
. Den här sökvägen pekar på det lokala filnamnsutrymmet och\\.\
är en liknande som pekar på det lokala DOS -enhetsnamnutrymmet. Detta format är också "rå" eller "uninterpreted" väg, eftersom det skickar vägar direkt till filsystemet utan att konvertera / till \ och tolka namn som .. . -
Windows NT
\\??\
-objekthanterare -prefixade sökvägar (globalt DOS -namnområde).
I versioner av Windows före Windows XP kan endast API: er som accepterar "långa" enhetsvägar ta emot mer än 260 tecken.
Det skal i Windows XP och Windows Vista , explorer.exe tillåter sökvägar upp till 248 tecken.
Eftersom UNC: er börjar med två backslashes och backslashen också används för att undvika strängar och i reguljära uttryck kan detta resultera i extrema fall av lutande tandpetarsyndrom : en rymd sträng för ett reguljärt uttryck som matchar en UNC börjar med 8 backslashes - \\\\\\\\
- eftersom string och reguljärt uttryck kräver båda att fly. Detta kan förenklas genom att använda råa strängar , som i C#: er @"\\\\"
eller Pythons r'\\\\'
, eller regelbundna uttryck, som i Perls qr{\\\\}
.
POSIX -vägnamnsdefinition
De flesta Unix-liknande system använder en liknande syntax. POSIX tillåter behandling av en väg som börjar med två snedstreck på ett implementeringsdefinierat sätt, men i andra fall måste systemen behandla flera snedstreck som enstaka snedstreck. Många applikationer på Unix-liknande system (till exempel scp , rcp och rsync ) använder resursdefinitioner som:
hostname:/directorypath/resource
eller URI -scheman med tjänstens namn (här 'smb'):
smb://hostname/directorypath/resource
Exempel
Unix -stil
Följande räkneexempel diskuterar beteendet hos en Unix -liknande filsystem som det skulle synas från en terminal eller terminalprogram (kommandoraden fönster):
Bifogad till en aktuell arbetskatalog (cwd) med:
/users/mark/
Man vill ändra den nuvarande arbetskatalogen till:
/users/mark/bobapples
I det ögonblicket kan den relativa sökvägen för den önskade katalogen representeras som:
./bobapples
eller kort sagt:
bobapples
och den absoluta sökvägen för katalogen som:
/users/mark/bobapples
Med tanke på bobapples som den relativa sökvägen för den önskade katalogen kan följande skrivas i kommandotolken för att ändra den aktuella arbetskatalogen till bobapples:
cd bobapples
Två punkter (" .. ") pekar uppåt i hierarkin för att ange överordnad katalog ; en punkt (" . ") representerar själva den aktuella katalogen. Båda kan vara komponenter i en komplex relativ väg (t.ex. " ../mark/./bobapples "), där " . " Ensam eller som den första komponenten i en sådan relativ väg representerar arbetskatalogen . (Att använda " ./foo " för att hänvisa till en fil " foo " i den aktuella arbetskatalogen kan ibland användbart skilja den från en resurs " foo " som finns i en standardkatalog eller på andra sätt; till exempel för att visa en specifik version av en manuell sida istället för den som är installerad i systemet.)
MS-DOS/Microsoft Windows-stil
I motsats till vad många tror, accepterar Windows system -API snedstreck, och därför bör alla ovanstående Unix -exempel fungera. Men många program på Windows tolkar ett snedstreck för andra ändamål eller behandlar det som ett ogiltigt tecken, och kräver därför att du anger backslash - särskilt cmd.exe -skalet (kallas ofta "terminalen" eftersom den vanligtvis körs i ett terminalfönster). Observera att många andra skal som är tillgängliga för Windows, till exempel tcsh och Windows PowerShell , tillåter snedstrecket.
Dessutom anger "\" inte en enda rot, utan istället roten till "aktuell disk". För att ange en fil på en annan disk än den aktuella krävs en prefix för en enhetsbokstav och kolon. Ingen oklarhet uppstår, eftersom kolon inte är ett giltigt tecken i ett MS-DOS-filnamn, och därför kan man inte ha en fil som heter "A:" i den aktuella katalogen.
UNC -namn (någon sökväg som börjar med \\? \ ) Stöder inte snedstreck.
Följande exempel visar sökvägar i MS -DOS / Windows -stil, med omvända snedstreck som används för att matcha den vanligaste syntaxen:
A:\Temp\File.txt
Denna väg pekar på en fil med namnet fil.txt , som ligger i katalogen Temp , som i sin tur ligger i rotkatalogen på enheten A: .
C:..\File.txt
Denna väg hänvisar till en fil som heter file.txt ligger i den överordnade katalogen den aktuella katalogen på enhet C: .
Folder\SubFolder\File.txt
Den här sökvägen anger en fil som heter File.txt som finns i SubFolder- katalogen som i sin tur finns i mappkatalogen som finns i den aktuella katalogen för den aktuella enheten (eftersom detta exempel inte ger någon enhetsspecifikation).
File.txt
Denna ganska enkla sökväg pekar på en fil med namnet File.txt
i den aktuella katalogen (eftersom sökvägen saknar en katalogspecifikation) på den aktuella enheten (eftersom det inte finns någon enhetsspecifikation).
\\.\COM1
Denna sökväg refererar till den första seriella porten ( COM1 ).
C:\>more < C:/Windows/system.ini
; for 16-bit app support
[386Enh]
woafont=dosapp.fon
EGA80WOA.FON=EGA80WOA.FON
EGA40WOA.FON=EGA40WOA.FON
CGA80WOA.FON=CGA80WOA.FON
CGA40WOA.FON=CGA40WOA.FON
...
I det här exemplet används en sökväg som innehåller snedstreck som katalogseparator. Kommandot omdirigerar filens innehåll till more
kommandot.
E:\>dir "/Folder/SubFolder/" /Q
Volume in drive E is Data
Volume Serial Number is 07BE-0B10
Directory of E:\Folder\SubFolder
18 October 2008 08:15 AM <DIR> DOMAIN\user .
18 October 2008 08:15 AM <DIR> DOMAIN\user ..
18 October 2008 08:15 AM <DIR> DOMAIN\user File.txt
1 File(s) 8 bytes
2 Dir(s) 19,063,000 bytes free
En sökväg som innehåller snedstreck behöver ofta omges av dubbla citattecken för att skilja den från kommandoradsväxlar .
- Obs: CD fungerar inte så här:
CD "[enhetsbokstav]:/programfiler" fungerar bara från rotkatalogen ([enhetsbokstav]: \). Detta verkar behandla alla snedstreck på samma sätt som. \.
- undantag: Använd omkopplaren /D för att ändra aktuell enhet utöver att ändra aktuell katalog för en enhet.
Till exempel:
CD "C:.\Program Files"
fungerar på samma sätt som
CD "C:/Program Files"
Från en rotmapp:
CD "C:.\Program Files.\Internet Explorer"
skulle behandlas på samma sätt som
CD "C:/Program Files/Internet Explorer"
Om det inte finns någon relativ sökväg till katalognamnet som anges med snedstreck kommer du att få följande fel:
The system cannot find the path specified.
För att ställa in miljövariabler är det ibland nödvändigt att ange en sökväg som inte innehåller mellanslag i den, till exempel %JAVA_HOME%
definierad som "C: \ Program Files \ Java ..." kan få skript att stanna när de stöter på utrymmet i sökvägen namn. För att få namnet på åtta tecken som Windows tilldelar en katalog för substitution i miljövariabler, använd kommandot med kataloglista med alternativet /x en nivå upp från målkatalogen. Till exempel får du det åtta teckennamnet för alla kataloger direkt under roten:
C:\>dir /x
Se även
- Filnamn
- Basnamn
- Enhetsfil
- Dirname
- Distribuerat filsystem (DFS)
- Filnamn
- Filsystem Hierarchy Standard (FHS)
- Fullt kvalificerat filnamn
- PATH (variabel)
- Uniform Resource Locator (URL)
Referenser
Denna artikel är baserad på material hämtat från Free On-line Dictionary of Computing före den 1 november 2008 och införlivat under "relicensering" -villkoren i GFDL , version 1.3 eller senare.
externa länkar
- Path Definition - Linux Information Project (LINFO)
- Namnge filer, sökvägar och namnområden - lokala filsystem: Windows: Microsoft Docs