为什么触摸失败?

Eri*_*ric 3 linux ubuntu

我一定遗漏了一些明显的东西。

这有效:

[root@host2 /]# cd /home/mysite/public_html/../logs 
[root@host2 /home/mysite/logs]# touch x
Run Code Online (Sandbox Code Playgroud)

这为什么不呢?

[root@host2 /]# touch /home/mysite/public_html/../logs/x
touch: cannot touch `/home/mysite/public_html/../logs/x': No such file or directory
Run Code Online (Sandbox Code Playgroud)

lar*_*sks 12

很有可能其中的一个目录/home/mysite/public_html/../logs/实际上是一个符号链接。cd在这种情况下,大多数现代 shell 中内置的命令会产生一些魔力,因此cd ..会将您带到“逻辑”父目录——它考虑了您是如何到达那里的。

当您尝试时touch /home/mysite/public_html/../logs/x,您不会获得这种魔力。

考虑:

$ ls -l /home/lars
public_html -> /var/www/lars
logs/
Run Code Online (Sandbox Code Playgroud)

如果我cd /home/lars/public_html真的在/var/www/lars. 因此从技术上讲,../logs不存在(因为logs我想要目录实际上是/home/lars,不是/var/www,这是“真正”的父母/var/www/lars