windowlinux路径写法(转载)
Windows路径是我们经常使⽤的东西,它看似简单,实际上隐含许多细节,这些都是在平常的使⽤过程中注意不到的。下⾯让我们来看看各种各样的Windows 路径。
提起路径,我们都会想到“绝对路径”和“相对路径”,实际上绝对路径是⼀个⼴泛的概念,它表⽰的是可以唯⼀定位⼀个⽂件或⽂件夹的路径,有多种形式的路径都属于绝对路径的范畴,例如:
完整路径(Full path)
我们平时所说的“绝对路径”通常就是指完整路径,它的格式如下:
C:\Windows\
UNC(Universal Naming Convention通⽤命名规范)路径
UNC路径⽤于在局域⽹上定位⽂件或⽂件夹,在通过⽹上邻居访问其它系统上的共享⽂件时使⽤的就是UNC路径。UNC路径的格式如下:
\\PC101\ShareFiles\job.doc
其中PC101是⽬标系统的计算机名,ShareFiles是⽬标系统上的共享⽂件夹名称。
以\\?\开头的路径
在某些⼿⼯辅助杀毒的⼯具中可以看到以\\?\开头的路径,这种路径我还不到正式的名称。完整路径和UNC路径都可以以\\?\开头:
\\?\C:\Windows\
\\?\UNC\PC101\ShareFiles\job.doc
相对路径(Relative path)
上⾯四种路径都可以在本地或⽹络上绝对定位⼀个⽂件,因此属于绝对路径。另⼀种我们常常使⽤的是相对路径,这种路径需要与进程的当前⽂件夹(Current directory)⼀起合作才可以定位⼀个⽂件或⽂件夹。进程的当前⽂件夹并不是指EXE⽂件所在的⽂件夹,它是每个进程都有的⼀个属性。例如在命令提⽰符中显⽰的路径就是这个进程的当前⽂件夹,使⽤cd命令可以改变当前⽂件夹,⽆论当前⽂件夹如何改变,⽂件所在的⽂件夹总是不变的。在进程启动的时候可以指定它的当前⽂件夹,例如在快捷⽅式的属性中有⼀个“起始位置”输⼊框,这个就是进程启动后的当前⽂件夹。如果在启动时不指定进程的当前⽂件夹(直接双击EXE⽂件的情况),那么EXE⽂件的所在⽂件夹就会作为它的当前
⽂件夹。
纯粹的相对路径格式如下:
Windows\
要注意的是相对路径的开头不能有\,很多⼈以为有没有\都是⼀样的,其实不然,以\开头的路径是另外⼀种路径,下⽂会详细介绍这种路径。
如果在进程中操作⽂件时传递⼀个相对路径,那么进程会将当前⽂件夹的路径与这个相对路径合并,得到⼀个完整路径。例如命令提⽰符的当前⽂件夹是
C:\Windows,如果执⾏start 命令,程序就会将两个路径合并得到C:\Windows\。
由于这样的特性,当前⽂件夹⼜称为⼯作⽂件夹,因为进程使⽤相对路径时都是针对该⽂件夹的。
除了上⾯所说的纯粹的相对路径,还有两种特殊的相对路径,为了不⾄于混淆,不再将它们称为相对路径。
以\开头的路径
上⾯说过相对路径不能以\开头,⼀旦如此,它就表⽰相对于当前⽂件夹根⽬录的路径。例如进程的当前⽂件夹是C:\Windows,那么\就表⽰C:\。不论当前⽂件夹的路径有多深,只取根⽬录进⾏合并。可以在命令提⽰符中进⾏验证:⾸先将C:\Windows设置为当前⽂件夹,然后执⾏start \命令,将会提⽰错误,所不到⽂件。再执⾏start \Windows\命令,这时计算器程序成功启动了,证明了上⾯的说法。
以盘符和冒号开头的路径
这种路径就像是拼写错误的完整路径,它的格式如下:
C:
盘符加冒号是⼀种特殊的表⽰法,表⽰的是进程在“该分区上的当前⽂件夹”。这⾥⼜蹦出来了⼀个当前⽂件夹,这与上⽂的当前⽂件夹是不同的。简单来说,对于每⼀个分区,进程都会保存在这个分区上最后使⽤的当前⽂件夹。可能解析的不够好,那么可以使⽤命令提⽰符来操作⼀遍以加深理解。
运⾏cmd,执⾏cd /d C:\Windows\System32命令进⼊该⽂件夹,然后切换到其它的分区,再执⾏命令,可以看到计算器程序启动了。
我们在执⾏cd命令进⼊C:\Windows\System32⽂件夹后,进程便以此为当前⽂件夹,当切换到其余的分
区时,进程先将这个⽂件夹的路径保存起来,再进⾏切
换。使⽤盘符和冒号的形式读取指定分区上的当前⽂件夹。
路径中的限制
除了路径格式上的限制,还有很多字符上的限制,下⾯⼀⼀来看看各种路径有什么限制。
除了以\\?\开头的路径之外,其它路径的长度都不能超过260个字符(包括结尾的\0字符),⽽\\?\开头的路径长度可以达到约32000个字符(系统在处理\\?\前缀的时候可能将它扩展成更长的字符串)。⽹络上流传的⼀则技巧:⽂件路径太长⽽不能被删除,可以在执⾏del命令时在路径前加上\\?\前缀。
⽂件或⽂件夹名称的最后⼀个字符不能为空格或句点。但在路径中,最后⼀个字符可以为句点,因为路径中的句点表⽰的是当期⽂件夹(这与上⽂的当前⽂件夹完全不同),两个句点表⽰的是上⼀级⽂件夹。以\\?\开头的路径中不能使⽤句点表⽰当前⽂件夹或上⼀级⽂件夹,在资源管理器的地址栏中虽然可以这么做,那是因为资源管理器对其作了处理。
⽂件或⽂件夹名称不能包含的字符:
< > : " / \ | ? *
在路径中可以使⽤ : \ ?,冒号是与盘符⼀起使⽤的,问号是\\?\前缀中特有的,除此之外不能出现这两个字符;⽽\是⽂件夹分割符。虽然我们也能使⽤/作为分隔符,实际上这是不允许的,系统在处理路径时会将/替换成\。另外,如果路径最后⼀个字符是\,那么该路径表⽰的是⽂件夹;否则表⽰的是⼀个⽂件。
UNC路径的计算机名部分不能出现以下字符:
` ~ ! @ # $ % ^ & * ( ) = + _ [ ] { } \ | ; : . ‘ “ , < > / ?
确实是够多的了,实际上标准的计算机名推荐只使⽤26个英⽂字母、10个数字以及-(连字符),否则可能会出现不到计算机的情况。在更改计算机名的时候如果出现⾮标准字符,系统会作出提⽰。
在Unix/Linux和windows中⽂件路径的表⽰⽅法是不⼀样的,在Unix/Linux中,路径的分隔采⽤正斜杠"/",⽐如"/home/fzu";⽽在Windows中,路径分隔采⽤反斜杠"\",⽐如"D:\tools\eclipse"。
此外,由于编译器的字符串解析中还涉及到转义字符的问题,经常会出现莫名其妙的错误,所以为了避免这样不必要的⿇烦,windows下的路径经常会⽤双反斜杠来表⽰,不管解析引擎是否将反斜杠解析成转义字符,最终在内存中得到的都是"\",因此写成"D:\\tools\\eclipse"是不会出问题的。
linux相对路径的表⽰:
. 表⽰⽤户所处的当前⽬录;
.. 表⽰上级⽬录;
_ 表⽰前⼀个⼯作⽬录;
linux怎么读取windows文件~ 表⽰当前⽤户⾃⼰的根⽬录;
~account 表⽰[account]这个⽤户的根⽬录。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论