这可能是一个措辞很差的问题,但这个问题的分类是我正在寻找的(不幸的是在这一点上我不能帮助它)。
这是我的问题。
我们不会四处调用Centos“Centos文件path”的文件系统表示,同样我们也不会在Ubuntu“Ubuntu文件path”甚至“Linux文件path”中调用文件系统 – 我通常会将这些称为“ NFSpath(不pipe这是否正确)。
我听说Windows用户将文件系统表示(带有盘符)称为“Windows文件path”。 所以我想我问“什么是Windows文件path”? 我的意思是pipe理Windows文件path的底层概念和协议是什么。
为了进一步明确,这里是一些例子。 据我的理解,我所说的NFSpath(无论是正确还是不正确)如下所示:
的/ etc /一些-其他-DIR
每个级别/目录除以/
我的“Windowspath”的天真分类看起来像这样:
C:\一些-DIR \一些孩子-DIR
所以在默认情况下,当我跳到我使用的各种Linux变体(Centos,Ubuntu)之一时,通常将其称为NFSpath。 当我跳到Windows时,我称之为“Windowspath”。 我意识到有可能pipe理这个文件系统映射的协议和标准(例如,把c:\ some-dir映射到一个磁盘的各个部分),Google指出了我在这里描述的CIFS / SMB: http://en.wikipedia .ORG /维基/ CIFS
但是这似乎描述了Windowsnetworkingpath。 我还在这里看到了“驱动器命名scheme” – http://en.wikipedia.org/wiki/DOS#Drive_naming_scheme – 但这并不能真正回答我的问题。 当我跳到我的Windows机器上,究竟是什么使Windowspath? 具体来说,当我指定c:\ some-dir \ some-child-dir时,操作系统正在使用哪些协议和标准将此地址指向我的硬盘? 让我们假设我们正在谈论Windows 7(尽pipe我也有兴趣知道Windows 7是否与其他版本的Windows不同)。
我意识到这可能是noob问题,答案可能很容易find正确的关键字,但不知道的挫折开始得到我。
没有“只是谷歌”的答案请 – 我已经做了这个广泛的,似乎只是提出了进一步的问题。 我在这里寻找技术解释。
几乎每一个现代系统都使用支持分层结构的文件系统 – 一些基本级别,文件夹包含更多文件夹(等等),其中一些文件包含文件。
在界面中使用的字符的select,告诉你你在哪里是非常随意的; 基于UNIX的系统使用正斜杠(/),DOS派生的使用反斜杠(\) – MSDN有一些背景select – 而OSX之前的Mac用冒号(:)
DOS(和后代,直到NT)给了所有的物理驱动器设备(以及伪造它们的东西)的单字母标识符。 原来有2个软盘驱动器(A:和B :)的空间,所以硬盘驱动器变成C :,并保持传统的方式(如果你改变你的启动驱动器的信,一个令人震惊的数量程序中断)。
在NT中,他们取消了驱动器为C:的大部分幕后要求,并增加了将另一个物理驱动器挂载到C:下的目录的function。 这使得它更符合UNIX的方式:启动驱动器挂载为“/”,其他各种驱动器可以挂载在它下面的文件夹(/ home,/ usr,/ tmp,无论你喜欢什么)。
当DOS发现networking时,他们摆脱了远程设备的驱动器盘符,为您提供了UNC风格的path:\ servername \ share \ folder \ file.txt。 共享只是服务器端基本目录的名称,共享名称与共享的顶级目录的名称相匹配是非常典型的,但不是必需的。
当你保持UNIX到UNIX或者Windows到Windows的时候,这很简单,只要把斜线和反斜线保持一致就可以了。 当你越过时,事情变得混乱。 大多数程序坚持使用它们运行的平台的语法,即使它们(可能在不知不觉中)从另一个平台访问某些东西。 一些应用程序 – 专门为跨平台兼容性编写,或者尝试用户友好的方式 – 就像input其他平台的预期格式一样。 这会变得麻烦:UNIX shell使用反斜杠作为转义字符; 您需要键入'\\'以获取作为input发送到UNIX命令的单个反斜杠作为命令行选项。
所有这些当然都是用户界面的东西。 在sceens之后,一个文件实际上由(基本上)一个数字(UNIX系统称之为一个inode)来标识,文件系统负责跟踪哪些名称(可能是多个,在硬链接的情况下是不同的目录中)映射到相同的inode,哪个磁盘扇区是同一个inode的内容)。