我昨天开始学习Linux。我有一个问题,我无法通过我的书或 Google 来回答。./
和/
在壳里有什么区别 ?
我问这个问题是因为当我运行命令时./home/yogesh/Desktop/Books
,我收到此错误:
bash: ./home/yogesh/Desktop : No such file or directory
然而,在删除点时它给出
/home/yogesh/Desktop/Books : Is a directory
或者,如果我运行/Desktop
,它会返回
/Desktop : No such file or directory
但是在之前添加一个点/
,我得到
./Desktop: is a directory
./
和 和有什么区别/
?
答案1
在 unix 上(就像在 Windows 上一样),/foo
是文件或目录的位置(绝对位置,从根目录开始:)/
。而./foo
是相对位置(相对于当前目录)...您可以省略前导点 + 斜杠,只写foo
.
通过输入命令/Desktop
或./Desktop
,您可以告诉 shell 执行无法执行的 Desktop...。
/Desktop
不存在,因此出现错误消息。
而./Desktop
,即绝对位置/Home/YOURNAME/Desktop
确实存在。但它是一个目录,而不是可执行文件...您可能忘记了要运行的命令的前缀(通常cd
是 或ls
)
答案2
示例说明:
/
(斜杠)表示 root,来自文件系统的根。因此,/home/yogesh/Desktop/Books
从根开始,然后检查home
,home
检查下yogesh
等等。这称为绝对路径。
.
(点)表示从当前目录开始。因此,如果您当前的目录是/home/yogesh
并且您检查了./Desktop
,它就在那里。这称为相对路径。
答案3
在 Unix 和类 Unix 系统上,.
表示当前目录。例如ls .
与 相同ls
,会列出当前目录的内容。因此,当您用作./Desktop
命令时,它会Desktop
在当前目录下找到一个名为 that 的目录。然后您会收到一条错误消息,告诉您这是一个目录,因此无法执行,因为它不是命令。
/
是文件系统的根。它与C:\
Windows 上类似。当您运行时/Desktop
,系统将Desktop
在该目录中查找名为 that 的目录/
。那是不存在的,它告诉你。
例如,如果我在/home/yogesh
并且我想要转到/home/yogesh/Desktop
,我可以使用相对路径(相对于我现在所在的目录)并运行cd ./Desktop
或cd Desktop
,或者我可以使用绝对路径并运行cd /home/yogesh/Desktop
。
答案4
第一个不应该是相对位置。
相对位置是指距离您所在位置较短的事物。绝对位置是从 root / 开始,这是 Linux 中的第一个目录位置。当你不在 /var 中时,你可以使用
cd /var/www
/var/www 是一个绝对位置。如果你在 /var 中,你可以使用
cd ./www
或者
cd www
将其记为更短。
我推荐一本 William Shots 的免费电子书。
这是该电子书的链接: