路径 (计算机科学)
路径(英語:)是一种電腦檔案或目录的名称的通用表现形式,它指向文件系统上的一个唯一位置。指向一个文件系统位置的路径通常采用以字符串表示的目录树分层结构,首个部分表示文件系统位置,之后以分隔字符分开的各部分路径表示各级目录,最后是该文件/文件夹。分隔字符最常采用斜線(/)、反斜线(\)或冒号(:)字符,不同操作系统与环境可能采用不同的字符。路径在计算机科学中被广泛采用,用以表示现代操作系统中常见的文件夹/文件关系,在构建统一资源定位符(URL)时也必不可少。资源可以采用绝对路径表示,也可采用相对路径表示。
绝对与相对路径
绝对路径也可称完整路径,是指向文件系统中某个固定位置的路径,不会因当前的工作目录而产生变化。为做到这点,它必须包括根目录。
相对路径则是以指定的工作目录作为基点,避开提供完整的绝对路径。檔案名稱就可以被视为以指定工作目录为基点的一个相对路径(虽然一般不将其称之为路径)。
各操作系统与shell中路径的表示法
操作系统 | Shell | 根目录 | 目录分隔符 | 当前目录 | 父目录 | 家(Home)目录 | 示例 |
---|---|---|---|---|---|---|---|
类Unix系统 | Unix shell | / |
/ |
. |
.. |
~ |
/home/user/docs/Letter.txt ./inthisdir ../../greatgrandparent ~/.rcinfo |
DOS | COMMAND.COM | [驱动器号:]\ 或\\[服务器名称]\[卷]\ |
\ |
. |
.. |
C:\USER\DOCS\LETTER.TXT A:PICTURE.JPG \\SERVER01\USER\DOCS\LETTER.TXT | |
OS/2 | cmd.exe | [驱动器号:]\ |
/ 或\ |
. |
.. |
C:\user\docs\Letter.txt
| |
Microsoft Windows | cmd.exe | \ (相对于当前工作目录的根)或 [驱动器号]:\ or \\[服务器]\[共享名称]\ 或 \\?\[drive_spec]:\ 或 \\?\[服务器]\[共享名称]\ or \\?\UNC\[服务器]\[共享名称]\ or \\.\[物理设备]\ |
/ 或\ |
. |
.. [1] |
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 | [驱动器名称:]/ 或[驱动器名称:]\ or \\[服务器名称]\ or
|
/ 或\ |
. |
.. |
~ |
C:\user\docs\Letter.txt \\Server01\user\docs\Letter.txt cd ~\Desktop
|
TOPS-20 | DCL | [驱动器名称:] |
. |
PS:<USER.DOCS>LETTER.TXT,4 | |||
RSX-11 | MCR | [驱动器名称:] |
DR0:[30,12]LETTER.TXT;4 | ||||
OpenVMS | DCL | [驱动器名称:][000000] or
|
. |
[] |
[-] |
SYS$LOGIN: |
SYS$SYSDEVICE:[USER.DOCS]PHOTO.JPG
|
Classic Mac OS | [卷或驱动器名称]: |
: |
: |
:: |
Macintosh HD:Documents:Letter :fileincurrentdir ::fileinparent :::fileingrandparent | ||
ProDOS | AppleSoft BASIC | /[卷或驱动器名称]/ |
/ |
/SCHOOL.DISK/APPLEWORKS/MY.REPORT
| |||
AmigaOS | Amiga CLI / AmigaShell | [驱动器、卷、设备或分配名称]: |
/ |
"" (empty string) |
/ |
Workbench:Utilities/MultiView DF0:S/Startup-Sequence S:Startup-Sequence TCP:en.wikipedia.com/80 | |
RISC OS | ShellCLI | [fs type[#option]:][:驱动器名或光盘名]$
注:&、%和@也可以用来引用当前用户的根目录、库和当前(工作)目录。 |
. |
@ |
^ |
& |
ADFS::MyDrive.$.Documents.Letter Net#MainServer::DataDrive.$.Main.sy10823 LanMan::WindowsC.$.Pictures.Japan/gif NFS:&.!Choices ADFS:%.IfThere @.inthisdir ^.^.greatgrandparent
|
Symbian | 文件管理器 | \ |
\ |
\user\docs\Letter.txt | |||
Domain/OS | Shell |
|
/ |
. |
\ |
~ |
//node/home/user/docs/Letter.txt ./inthisdir \\greatgrandparent ~rcinfo |
MenuetOS | CMD | / |
/ |
||||
Stratus VOS | VOS命令行解释器 | %[系统名称]#[模块名称]> |
> |
< |
%sysname#module1>SubDir>AnotherDir | ||
NonStop Kernel | TACL Tandem高级命令语言 | 无根 | . |
无父目录 | \NODE.$DISK.SUBVOL.FILE
| ||
CP/M | CCP | [驱动器号:] |
无子目录 | 无子目录 | 无父目录 | 无子目录 | A:LETTER.TXT |
GS/OS | :[卷名称]: 或.[驱动器名称]: 或[前缀]:
注:前缀可能为一个数字(0-31)、 |
: 或/ |
@ |
:Apps:Platinum.Paint:Platinum.Paint *:System:Finder .APPLEDISK3.5B/file |
日语和韩语版本的Windows可能经常显示“¥”或“₩”字符代表目录分隔符。此种情况是反斜杠的代码被绘制为这些字符。非常早期的MS-DOS版本在显示器上用这些字形替代了反斜杠,以便只能理解7位ASCII的程序显示它们(其他字符如方括号也被替换,见ISO/IEC 646、Windows Codepage 932 (Japanese Shift JIS) (页面存档备份,存于)和Codepage 949 (Korean) (页面存档备份,存于))。尽管Windows的首个版本就支持8位ISO/IEC 8859-1字符集并且¥(Yen)字符位于U+00A5,以及现代版本Windows支持Unicode而₩(Won)字符位于U+20A9,许多软件仍继续以这种ASCII形式显示反斜杠,以保持向后兼容性。[2]
MacOS作为UNIX的派生,在内部采用UNIX路径。
但是,为保持软件兼容性和用户的习惯,许多用户图形界面會在內部將使用者輸入的"/"符號替換為":"符號,並且在向使用者顯示檔案名稱時替換回"/"符號 (反之亦然,使用者輸入的":"符號將在內部被替換為"/"符號,但顯示時並不會反向替換回":"符號)
参考资料
外部链接
- Path Definition (页面存档备份,存于) - The Linux Information Project (LINFO)
- Naming Files, Paths, and Namespaces (页面存档备份,存于) - Microsoft Developer Network (MSDN)