./ 和 ~/ 之间的区别

2023-11-25

创建文件路径和 URL 时,我注意到很多时候路径以./ or ~/.

以以下开头的文件路径有什么区别./ and ~/?

它们各自的含义是什么?


为了完整起见...

  • Just path是一个名为的文件或目录path在当前目录中。
  • ./path是一个名为的文件或目录path在当前目录中,并拼写出目录。点目录.代表当前目录,并且path是此目录中的文件或目录的名称。
  • ~/path是一个简写$HOME/path where $HOME是一个引用您的主目录的变量。通常您的主目录将位于类似的位置/home/you or /Users/you where you是您的帐户名。 (命令echo "$HOME"将显示您的主目录。)扩展的值是绝对路径(除非您弄乱了$HOME彻底),如最初的斜线所示。
  • /path是一个绝对路径,引用名为的文件或目录path这是在root目录/。 Unix 上的每个文件最终都位于从根目录开始的目录树中的某个位置。

以以下内容开头的文件名$在其名称中包含 shell 变量的值(例如$HOME多于);您必须知道该变量的值才能确定它最终包含相对路径还是绝对路径。相似地,~文件名开头的部分被 shell 替换(“扩展”)为不同的字符串,如上所述。 (从技术上讲,文件名也可以以文字美元符号或波形符开头;然后您必须引用或反斜杠转义该字符,以避免 shell 将其扩展为其他内容。这相当不方便,因此这些文件名在实践中往往很少见。)

在下面的说明中,我们引用任何此类替换的结果,并忽略可能引用的复杂性。

每个文件名以/ is an absolute路径(又名完整路径)它解释了如何从根目录开始到达特定节点。例如,/var/tmp/you/reminder.txt指一个文件或目录reminder.txt(从名称来看,可能是一个文件;但 Unix 并不关心你如何称呼你的文件或目录)位于目录中you这是在目录中tmp这是在目录中var它位于根目录中。

每个不以以下字符开头的文件名/ is a relativepath 指示如何从当前目录开始到达特定文件或目录。特殊目录..是父目录(即包含该目录的目录)和特殊目录.是当前目录。所以path/there指文件或目录there目录内path在当前目录中;以及(将鼠标悬停在灰色区域上可显示剧透)

there/.././and/back/..是一种(极其复杂的)引用目录的方式and在当前目录下,我们遍历there目录,然后移回当前目录;然后停留在当前目录;然后参考目录back目录内and,但然后返回到该目录的父目录,最终得到./and.

此外~/对于当前用户的主目录,某些 shell 和应用程序允许使用这种表示法~them/引用用户帐户的主目录them。此外,某些 Web 服务器配置允许每个用户在其目录中拥有一个公共网站~/public_html和 URL 符号http://server/~them/将提供用户帐户的网站them对于外部访客。

The 当前目录是 shell 提供的一种便利,因此您不必一直键入长路径。如果你愿意的话,你可以。

/bin/ls /home/you/Documents/unix-101/directories.txt

这是一种冗长但完全有效的说法(假设您位于主目录中),

ls Documents/unix-101/directories.txt

你也可以说

cd Documents/unix-101
ls directories.txt

直到你cd同样,您的所有命令都将在此目录中运行。

See 当前工作目录到底是什么?对这个相关概念进行更长时间的阐述。

“目录”有时被那些还没有到喜欢前者的年龄的人称为“文件夹”。


切线,不要混淆目录名称.使用 Bourne shell 命令,该命令包含一个点(也因其 Bash 别名而闻名)source)。命令

. ./scriptname

运行文件中的命令./scriptname在当前 shell 实例的上下文中,而不是在单独的子 shell 中(这只是./scriptname做)。换句话说,该命令行调用点命令在一个文件上scriptname in the 点目录。

Bourne shell(以及 Bash、Zsh 等衍生产品)使用单引号来防止变量扩展和通配符扩展,并使用双引号来允许变量扩展,但禁止字符串中的通配符扩展。 Windows 上的引用规则不同,通常使用双引号将空格分隔的值保留为单个字符串(并且%代替$用于变量替换)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

./ 和 ~/ 之间的区别 的相关文章

随机推荐