文件路径中的含义是什么?


41

什么是 ~ 意味着绝对文件路径?

我在构建脚本之类的输出中看到了这一点,但路径不存在。


25
哪个操作系统?
ChrisF

不是Windows 默认 骰子滚?
Pacerier

Answers:


34

通常它意味着用户的主目录,例如 ~mike/ 将是用户 mike 的主页, ~/ 将是你自己的主目录。但是,我不清楚是否 ~/~mike/ 应被视为绝对或相对的;它似乎取决于给定的定义(如果有人可以提出一个授权参考,请发表评论)。

请注意,我在这里谈论基于Unix的系统。

看到 http://en.wikipedia.org/wiki/Home_directory#Unix


3
它们是绝对的,因为它们是绝对路径的同义词:在UNIX上,绝对路径可以从内容中推断出来 /etc/login 文件。传统上,扩展是由shell完成的,但是任何具有“脚本编写”自负的语言也会这样做。
Charles Stewart

2
+1:我不知道 ~username/ 事情。
Wuffers

2
有趣的是,Windows PowerShell也接受 ~ 作为用户主目录的同义词。
Joey

1
Jeffery Snover表示,PowerShell最初是基于VIM / EMAC
Anonymous Type

1
@Charles Stewart可以说至少〜/是相对的,因为它取决于用户的上下文。另外一些引用将绝对路径定义为从文件系统的根目录给出的绝对路径,这些路径显然不是。如果您对自己的陈述有参考,请分享!
Adrian Mouat

21

实际上,Adrian Mouat和studiohack的答案都是正确的。
在具有有限命名约定的操作系统(较旧版本的Windows / DOS等)中,它表示长名称。

e.g. "c:\program files\" is equivalent to "c:\progra~1\"

在某些操作系统(即Unix)中,它意味着home-dir(可能被视为绝对但不是规范的路径)。
e.g."/a/vol01/usr/mike/" might be shortened to "~/mike/"
*'usr'是家庭目录。


2
在构建脚本的上下文中,它可能是以Unix为中心的版本。
Charles Stewart

2
Unix路径通常使用正斜杠而不是反斜杠。
Torben Gundtofte-Bruun

@torbengb,是的...... opps
Eran

1
对Xenorose的其他优秀答案进行小幅修正。像“progra~1”这样的文件名不适用于较旧的操作系统。我的Windows 7系统仍在使用它们。 (请执行dir / x。)这是一项遗留功能,支持不了解现代系统中长文件名的旧软件。旧软件认为所有文件名都遵循 8.3惯例 。当文件名不能使用此约定时,文件系统会自动运行 创建 第二个8.3兼容名称。
Isaac Rabinovitch


5

如果你做ASP.NET编程,它意味着网站的顶层;而不是使用../../images/some_image.jpg进行导航(并使你的嵌套级别错误!)你可以简单地说〜/ images / some_image.jpg


1
/images/some_image.jpg 应该带你到任何网站的根。代码在ASP.NET中提供了哪些附加功能?
Sonny

7
〜如果您使用的是虚拟目录,则会将您带到与Web站点根目录不同的Web应用程序根目录。例如,如果您的网站安装在myserver的虚拟目录myapp中,〜/ images / myimage.jpg将解析为 MYSERVER / MyApp的/图像/ myimage.jpg 。看到 msdn.microsoft.com/en-us/library/ms178116.aspx
MCS

1

这里有一些提示可以帮助您更好地理解它:

$ readlink -f ~

$ echo $HOME

注意: $ 是指定用户命令行提示的约定,它不是命令的一部分。


'readlink'不被识别为内部或外部命令。
Pacerier

@vtest那是因为这个评论中的例子是基于unix的系统,而不是Windows。
dudewad
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.