Cesta (výpočetní) - Path (computing)
Path je řetězec ze znaků použitých k jednoznačné identifikaci umístění v adresářové struktuře . Skládá se z následující hierarchie adresářových stromů, ve které komponenty oddělené oddělovacím znakem představují každý adresář. Oddělovací znak je nejčastěji lomítko ("/"), zpětné lomítko ("\") nebo dvojtečka (":"), ačkoli některé operační systémy mohou používat jiný oddělovač . Cesty se ve výpočetní technice široce používají k reprezentaci vztahů mezi adresáři a soubory běžných v moderních operačních systémech a jsou zásadní při konstrukci adres URL ( Uniform Resource Locators ). Prostředky mohou být reprezentovány buď absolutními, nebo relativními cestami .
Dějiny
Společnost Multics poprvé představila hierarchický souborový systém s adresáři (oddělenými „>“) v polovině 60. let minulého století.
Kolem roku 1970 představil Unix lomítko („/“) jako oddělovač adresářů.
V roce 1981 byla vydána první verze systému Microsoft DOS . MS-DOS 1.0 nepodporoval adresáře souborů. Také velká část obslužných příkazů zabalených s MS-DOS 1.0 pochází od IBM a jejich syntaxe příkazového řádku používala lomítko jako předponu 'switch'. Například dir /w
spustí dir
příkaz s možností formátu širokého seznamu.
Toto použití lomítka lze stále nalézt v příkazovém rozhraní v systému Microsoft Windows . Naproti tomu Unix používá jako předponu přepínače příkazového řádku znak pomlčky („-“).
Když byla do systému MS-DOS ve verzi 2.0 přidána podpora adresářů, bylo pro zpětnou kompatibilitu zachováno „/“ jako znak předpony přepínače. Společnost Microsoft zvolila jako oddělovač adresářů znak zpětného lomítka ("\"), který vypadá podobně jako znak lomítka, i když modernější verze systému Windows jsou agnostika lomítka, která umožňuje mixování obou typů lomítek v cestě.
Absolutní a relativní cesty
An absolutní nebo úplné cesta vede do stejného umístění v souborovém systému, bez ohledu na aktuální pracovní adresář . K tomu musí obsahovat kořenový adresář .
Naproti tomu relativní cesta začíná od nějakého daného pracovního adresáře, čímž se vyhnete potřebě poskytnout úplnou absolutní cestu. Název souboru lze považovat za relativní cestu založenou na aktuálním pracovním adresáři. V případě, že pracovní adresář není souboru je nadřazený adresář , je soubor nebyl nalezen chyba bude mít za následek, pokud soubor je určena svým jménem.
Reprezentace cest podle operačního systému a shellu
Operační systém |
Shell | Kořenový adresář |
Oddělovač adresářů |
Aktuální adresář |
Nadřazený adresář |
Domovský adresář |
Příklady |
---|---|---|---|---|---|---|---|
Unix-like OS (incl. MacOS ) |
Unixový shell |
/
|
/
|
.
|
..
|
~
|
/home/user/docs/Letter.txt ./inthisdir ../../greatgrandparent ~/.rcinfo
|
DOS | COMMAND.COM |
[drive letter:]\ nebo \\[server name]\[volume]\
|
\
|
.
|
..
|
C:\USER\DOCS\LETTER.TXT A:PICTURE.JPG \\SERVER01\USER\DOCS\LETTER.TXT
|
|
OS/2 | cmd.exe |
[drive letter:]\ nebo \\[server name]\[volume]\
|
/ nebo \
|
.
|
..
|
C:\user\docs\Letter.txt A:Picture.jpg \\SERVER01\USER\docs\Letter.txt
|
|
Microsoft Windows |
cmd.exe |
\ (vzhledem k aktuálnímu kořenovému adresáři pracovního adresáře)nebo [drive_letter]:\ nebo nebo nebo nebo nebo \\[server]\[sharename]\ \\?\[drive_spec]:\ \\?\[server]\[sharename]\ \\?\UNC\[server]\[sharename]\ \\.\[physical_device]\ |
/ nebo \
|
.
|
..
|
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:]/ nebo [drive name:]\ nebo nebo\\[server name]\
|
/ nebo \
|
.
|
..
|
~
|
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] nebo
|
.
|
[]
|
[-]
|
SYS$LOGIN:
|
SYS$SYSDEVICE:[USER.DOCS]PHOTO.JPG
|
Klasický Mac OS |
[volume or drive name]:
|
:
|
:
|
::
|
Macintosh HD:Documents:Letter :fileincurrentdir ::fileinparent :::fileingrandparent
|
||
ProDOS | AppleSoft ZÁKLADNÍ |
/[volume or drive name]/
|
/
|
/SCHOOL.DISK/APPLEWORKS/MY.REPORT
|
|||
AmigaOS | Amiga CLI / AmigaShell |
[drive, volume, device or assign name]:
|
/
|
"" (prázdný řetězec) |
/
|
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.]$
poznámka: &, % a @ lze také použít k odkazu na kořen |
.
|
@
|
^
|
&
|
ADFS::MyDrive.$.Documents.Letter Net#MainServer::DataDrive.$.Main.sy10823 LanMan::WindowsC.$.Pictures.Japan/gif NFS:&.!Choices ADFS:%.IfThere @.inthisdir ^.^.greatgrandparent
Když jsou připojeny souborové systémy s příponou názvu souboru, |
Symbian OS | Správce souborů |
\
|
\
|
\user\docs\Letter.txt
|
|||
Doména/OS | Shell |
|
/
|
.
|
\
|
~
|
//node/home/user/docs/Letter.txt ./inthisdir \\greatgrandparent ~rcinfo
|
MenuetOS | CMD |
/
|
/
|
||||
Stratus VOS | Tlumočník příkazového řádku VOS |
%[system_name]#[module_name]>
|
>
|
<
|
%sysname#module1>SubDir>AnotherDir
|
||
NonStop jádro |
TACL Tandem Advanced Command Language |
Žádný kořen |
.
|
žádný nadřazený adresář |
\NODE.$DISK.SUBVOL.FILE \NODE.$DEVICE \NODE.$DEVICE.#SUBDEV.QUALIFIER
|
||
CP/M | CCP |
[drive letter:]
|
žádná podpora adresářů, pouze uživatelské oblasti 0 – F |
A:LETTER.TXT
|
|||
GS/OS |
:[volume name]: nebo .[device name]: nebo[prefix]:
poznámka: předpona může být číslo (0–31), |
: nebo /
|
@
|
:Apps:Platinum.Paint:Platinum.Paint *:System:Finder .APPLEDISK3.5B/file
|
Japonské a korejské verze systému Windows mohou místo oddělovače adresářů často zobrazovat znak „ ¥ “ nebo „ ₩ “. V takových případech se kód pro zpětné lomítko vykresluje jako tyto znaky. Velmi rané verze systému MS-DOS nahradily zpětné lomítko těmito glyfy na displeji, aby bylo možné je zobrazit programy, které rozuměly pouze 7bitovému ASCII (byly nahrazeny i jiné znaky, jako jsou hranaté závorky, viz ISO 646 , Windows Codepage 932 (Japanese Shift JIS) , and Codepage 949 (Korean) ). Přestože i první verze systému Windows podporovala 8bitovou znakovou sadu ISO-8859-1, která má znak Yen na U+00A5, a moderní verze systému Windows podporují Unicode, který má na U+20A9 znak Won, mnoho softwaru bude pokračovat k zobrazení zpětných lomítek nalezených v souborech ASCII tímto způsobem, aby byla zachována zpětná kompatibilita.
Mac OS X , jako derivát systému UNIX, používá cesty UNIX interně. Aby však byla zachována kompatibilita se softwarem a uživatelská známost, mnoho částí GUI přepne uživatel "na" "" interně a přepne je zpět při zobrazování názvů souborů (změní se také ":" zadané uživatelem do "/", ale inverzní překlad se nestane).
Cesty v programovacích jazycích
Programovací jazyky také používají cesty. Např. Při otevření souboru. Většina programovacích jazyků používá reprezentaci cesty podkladového operačního systému:
uxFile = fopen("project/readme.txt", "r")
winFile = fopen("C:\\Program Files\\bin\\config.bat", "r")
Tento přímý přístup k cestám operačního systému může bránit přenositelnosti programů. K podpoře přenosných programů používá Java File.separator k rozlišování mezi / a \ oddělenými cestami. Seed7 má jiný přístup k reprezentaci cesty. V Seed7 používají všechny cesty unixovou konvenci cesty, nezávislou na operačním systému. Pod okny probíhá mapování (např .: Cesta /c /uživatelé je mapována na c: \ users ).
Universal Naming Convention
Microsoft Windows UNC , zkratka pro Universal Naming Convention nebo Uniform Naming Convention , určuje společnou syntaxi k popisu umístění síťového prostředku, například sdíleného souboru, adresáře nebo tiskárny. Syntaxe UNC pro systémy Windows má obecný tvar:
\\ComputerName\SharedFolder\Resource
Microsoft to často označuje jako „ síťovou cestu “.
Některá rozhraní systému Microsoft Windows také umožňují nebo vyžadují syntaxi UNC pro přístup ke sdílení WebDAV , nikoli adresu URL. UNC syntax je rozšířen o volitelné komponenty pro označení použití SSL a číslo portu TCP / IP, WebDAV URL z http[s]://HostName[:Port]/SharedFolder/Resource
stává
\\HostName[@SSL][@Port]\SharedFolder\Resource
Při vzdáleném zobrazení může mít „SharedFolder“ jiný název, než jaký vidí program na serveru při otevírání „\ SharedFolder“. Místo toho se název SharedFolder skládá z libovolného názvu přiřazeného složce při definování jejího „sdílení“.
Některá rozhraní systému Microsoft Windows akceptují také „Long UNC“:
\\?\UNC\ComputerName\SharedFolder\Resource
Microsoft Windows používá následující typy cest:
- lokální souborový systém (LFS), jako např
C:\File
- univerzální pojmenování (UNC), například
\\Server\Volume\File
nebo /<internet resource name>[\Directory name]
(alespoň ve Windows 7 a novějších) - „dlouhá“ cesta zařízení jako
\\?\C:\File
nebo\\?\UNC\Server\Volume\File
. Tato cesta ukazuje na místní obor názvů souborů a\\.\
je podobná, která ukazuje na místní obor názvů zařízení DOS. Tento formát je také „raw“ nebo „uninterpreted“ cesta, protože to vysílá cesty přímo do souborového systému bez konverze / k \ a interpretace jména jako .. . -
Správce objektů systému Windows NT
\\??\
-předpřipravené cesty (globální obor názvů DOS).
Ve verzích systému Windows před Windows XP mohla více než 260 znaků přijímat pouze rozhraní API, která přijímají „dlouhé“ cesty zařízení.
Shell v systému Windows XP a Windows Vista , explorer.exe , umožňuje názvy cest až 248 znaků.
Vzhledem k tomu, že UNC začínají dvěma zpětnými lomítky a zpětné lomítko se také používá pro únik řetězců a v regulárních výrazech , může to mít za následek extrémní případy syndromu nakláněného párátka : uniklý řetězec pro regulární výraz odpovídající UNC začíná 8 zpětnými lomítky - \\\\\\\\
- protože řetězec i regulární výraz vyžadují únik. To lze zjednodušit použitím nezpracovaných řetězců , jako v C# @"\\\\"
nebo Pythonu r'\\\\'
, nebo literálů s regulárním výrazem, jako v Perlu qr{\\\\}
.
Definice názvu cesty POSIX
Většina unixových systémů používá podobnou syntaxi. POSIX umožňuje zpracování cesty začínající dvěma lomítky způsobem definovaným implementací, ačkoli v jiných případech musí systémy považovat více lomítek za jednotlivá lomítka. Mnoho aplikací v systémech podobných Unixu (například scp , rcp a rsync ) používá definice prostředků, jako například:
hostname:/directorypath/resource
nebo schémata URI s názvem služby (zde 'smb'):
smb://hostname/directorypath/resource
Příklad
Unixový styl
Následující zpracovaný příklad popisuje chování souborového systému ve stylu Unixu, jak by vypadalo z terminálu nebo terminálové aplikace (okno příkazového řádku):
Připojeno k aktuálnímu pracovnímu adresáři (cwd):
/users/mark/
Jeden chce změnit aktuální pracovní adresář na:
/users/mark/bobapples
V tu chvíli může být relativní cesta k požadovanému adresáři reprezentována jako:
./bobapples
nebo ve zkratce:
bobapples
a absolutní cesta k adresáři jako:
/users/mark/bobapples
Vzhledem k tomu, že bobapples jsou relativní cestou k požadovanému adresáři, lze na příkazovém řádku zadat následující příkaz a změnit aktuální pracovní adresář na bobapples:
cd bobapples
Dvě tečky („ .. “) směřují v hierarchii nahoru , což označuje nadřazený adresář ; jedna tečka („ . “) představuje aktuální aktuální adresář. Oba mohou být komponenty komplexní relativní cesty (např. „ ../Mark/./bobapples “), kde „ . “ Samostatně nebo jako první komponenta takové relativní cesty představuje pracovní adresář . (Použití „ ./foo “ k označení souboru „ foo “ v aktuálním pracovním adresáři jej někdy může užitečně odlišit od zdroje „ foo “, který lze nalézt ve výchozím adresáři nebo jinými prostředky; například pro zobrazení konkrétního verze stránky s manuálem místo stránky nainstalované v systému.)
Styl MS-DOS/Microsoft Windows
Na rozdíl od všeobecného přesvědčení API systému Windows akceptuje lomítko, a proto by všechny výše uvedené příklady Unixu měly fungovat. Mnoho aplikací v systému Windows však interpretuje lomítko pro jiné účely nebo s ním zachází jako s neplatným znakem, a proto vyžadují zadání zpětného lomítka - zejména prostředí cmd.exe (často se mu říká „terminál“, protože obvykle běží v okně terminálu). Všimněte si toho, že mnoho dalších prostředí dostupných pro Windows, například tcsh a Windows PowerShell , povoluje lomítko.
Navíc "\" neznamená jeden root, ale místo toho kořen "aktuálního disku". Označení souboru na disku jiném než aktuálním vyžaduje předponu písmene jednotky a dvojtečky. Z toho vyplývá nejednoznačnost, protože dvojtečka není platným znakem v názvu souboru systému MS-DOS, a proto v aktuálním adresáři nelze mít soubor s názvem „A:“.
Názvy UNC (libovolná cesta začínající \\? \ ) Nepodporují lomítka.
Následující příklady ukazují cesty ve stylu MS -DOS / Windows , přičemž zpětná lomítka slouží k shodě s nejběžnější syntaxí:
A:\Temp\File.txt
Tato cesta odkazuje na soubor s názvem file.txt , který se nachází v adresáři Temp , který podle pořadí je umístěn v kořenovém adresáři disku A: .
C:..\File.txt
Tato cesta odkazuje na soubor s názvem soubor.txt nachází v nadřazeném adresáři aktuálního adresáře na jednotce C: .
Folder\SubFolder\File.txt
Tato cesta označuje soubor nazvaný soubor.txt umístěn v podsložky adresáři, který je dále umístěn v složky adresáře, který je umístěn v aktuálním adresáři aktuální jednotky (protože tento příklad neposkytuje žádné hnací-specifikace).
File.txt
Tato poměrně jednoduchá cesta ukazuje na soubor s názvem File.txt
umístěný v aktuálním adresáři (protože cesta postrádá specifikaci adresáře) na aktuální jednotce (protože není uvedena žádná specifikace jednotky).
\\.\COM1
Tato cesta odkazuje na první sériový port ( 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
...
Tento příklad používá jako oddělovač adresářů cestu obsahující lomítka. Příkaz přesměruje obsah souboru na more
příkaz.
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
Cesta, která obsahuje lomítka, musí být často obklopena dvojitými uvozovkami, aby byla odlišena od přepínačů příkazového řádku .
- poznámka: CD nefunguje takto:
CD „[písmeno jednotky]:/Program Files“ bude fungovat pouze z kořenového adresáře ([písmeno jednotky]: \). Zdá se, že se všemi lomítky zachází stejně jako. \.
- výjimka: Pomocí přepínače /D můžete kromě změny aktuálního adresáře jednotky změnit také aktuální disk.
Například:
CD "C:.\Program Files"
funguje stejně jako
CD "C:/Program Files"
Také z kořenové složky:
CD "C:.\Program Files.\Internet Explorer"
bude zacházeno stejně jako
CD "C:/Program Files/Internet Explorer"
Pokud neexistuje žádná relativní cesta k názvu adresáře zadanému pomocí lomítek, zobrazí se následující chyba:
The system cannot find the path specified.
Pro nastavení proměnných prostředí je někdy nutné zadat cestu, která v něm neobsahuje mezery, například %JAVA_HOME%
definovaná jako "C: \ Program Files \ Java ..." může způsobit zastavení skriptů, když narazí na místo v cestě. název. Chcete-li získat osmimístný název, který systém Windows přiřazuje libovolnému adresáři pro nahrazení v proměnných prostředí, použijte příkaz výpis adresáře s možností /x o jednu úroveň výše z cílového adresáře. Například následující vám poskytne název osmi znaků pro všechny adresáře přímo pod rootem:
C:\>dir /x
Viz také
- Název souboru
- Základní jméno
- Soubor zařízení
- Příjmení
- Distribuovaný souborový systém (DFS)
- Název souboru
- Standard hierarchie souborového systému (FHS)
- Plně kvalifikovaný název souboru
- PATH (proměnná)
- Uniform Resource Locator (URL)
Reference
Tento článek vychází z materiálu převzatého z Free On-line Dictionary of Computing před 1. listopadem 2008 a začleněn pod podmínky „relicencování“ GFDL , verze 1.3 nebo novější.
externí odkazy
- Definice cesty - Linux Information Project (LINFO)
- Pojmenování souborů, cest a oborů názvů - místní souborové systémy: Windows: Dokumenty Microsoft