ka@karl:~$ ls ./test_source_sym
file.txt
ka@karl:~$ ln -s ./test_source_sym ./test_sym/dir
ka@karl:~$ ls -la ./test_sym/dir
lrwxrwxrwx 1 karl karl 17 jun 28 09:56 ./test_sym/dir -> ./test_source_sym
ka@karl:~$ cat ./test_sym/dir/file.txt
cat: ./test_sym/dir/file.txt: No such file or directory
Есть ли что-то, что я неправильно понял здесь относительно символических ссылок?
$ ln -s ./test_source_sym ./test_sym/dir
$ ls -al ./test_sym/dir
lrwxrwxrwx 1 user1 users 17 jun 28 18:25 ./test_sym/dir -> ./test_source_sym
это ссылка на неправильный каталог; это должен быть родительский каталог
$ rm ./test_sym/dir
$ ln -s ../test_source_sym ./test_sym/dir
$ ls -al ./test_sym/dir
lrwxrwxrwx 1 user1 users 18 jun 28 18:25 ./test_sym/dir -> ../test_source_sym
$ cat ./test_sym/dir/file.txt
hello world!
, который будет легче понять, когда вы впервые перейдете в каталог test_sym:
$ rm ./test_sym/dir
$ cd test_sym
$ ln -s ../test_source_sym dir
$ ls -al
total 16
drwxr-xr-x 145 user1 users 12288 jun 28 18:23 ..
lrwxrwxrwx 1 user1 users 18 jun 28 18:31 dir -> ../test_source_sym
drwxr-xr-x 2 user1 users 4096 jun 28 18:31 .
$ cat dir/file.txt
hello world!
./test_source_sym
существует ./test_sym
существует ln -s ./test_source_sym/* ./test_sym
Я не на 100% уверен, почему это так, но я смог исправить вашу проблему после репликации, выполнив следующие действия:
steven:~/.tmp$ ls ./test_source_sym
file.txt
steven:~/.tmp$ mkdir test_sym
steven:~/.tmp$ cd test_sym
steven:~/.tmp/test_sym$ ln -vs ~/.tmp/test_source_sym dir
'dir' -> '/home/steven/.tmp/test_source_sym'
steven:~/.tmp/test_sym$ cat dir/file.txt
This is a file with text in it.
Line 2 of text.
3
Last line, goodbye!
Похоже, это проблема с ln
команда, определяющая полный путь test_source_sym
и, следовательно, не создающая правильную символическую ссылку на этот каталог. При использовании цветного вывода для ls
символическая ссылка, созданная вашим методом, отображалась как неработающая.
Надеюсь, это поможет!