哇,我以前从未真正使用过符号链接,但这真是令人难以置信:
bash-3.2$ echo "weird" > original.txt
bash-3.2$ mkdir originals
bash-3.2$ mv original.txt originals/
bash-3.2$ cat originals/original.txt
weird
bash-3.2$ mkdir copies
bash-3.2$ ln -s originals/original.txt copies/copy.txt
bash-3.2$ cat copies/copy.txt
cat: copies/copy.txt: No such file or directory
bash-3.2$ ls copies/copy.txt
copies/copy.txt
bash-3.2$ ls -l copies/copy.txt
lrwxr-xr-x 1 zach staff 22 Dec 22 01:23 copies/copy.txt -> originals/original.txt
bash-3.2$ cat originals/original.txt
weird
bash-3.2$ cat copies/copy.txt
cat: copies/copy.txt: No such file or directory
bash-3.2$ cd copies/
bash-3.2$ cat copy.txt
cat: copy.txt: No such file or directory
Run Code Online (Sandbox Code Playgroud)
为什么我不能在复制目录中捕捉符号链接?
如果我从副本中创建符号链接,我可以很好地捕捉它.如果我在当前目录中创建符号链接,我也可以很好地捕捉它.如果我在当前目录中创建符号链接,然后将其移动到副本/,我得到"copies/copy.txt:没有这样的文件或目录".
kev*_*kev 18
如果创建符号链接的相对路径,则会将其存储为相对符号链接.符号链接相对于链接所在的位置,而不是创建或打开链接的位置.
请使用相对于链接的绝对路径或路径.
更改:
ln -s originals/original.txt copies/copy.txt
Run Code Online (Sandbox Code Playgroud)
至:
# absolute
ln -s /path/to/originals/original.txt copies/copy.txt
# relative
cd copies
ln -s ../originals/original.txt copy.txt
Run Code Online (Sandbox Code Playgroud)
您还可以使用相对路径来实现此目的.喜欢
cd copies
ln -s ../originals/original.txt copy.txt
Run Code Online (Sandbox Code Playgroud)
这会奏效
当您打开它试图从副本目录引用该文件的符号链接时,由于该链接不存在,您将收到该错误.
当您使用相对或绝对路径时,此问题将得到解决.