> cd /tmp
> ln -s foo
> ls -alhF /tmp
lrwxrwxrwx 1 user user 3 Jul 29 14:00 foo -> foo
Czy jest to błąd ln
lub czy istnieje przypadek użycia do dowiązania pliku do siebie?
To jest z coreutils 8.21-1ubuntu5.1
.
> cd /tmp
> ln -s foo
> ls -alhF /tmp
lrwxrwxrwx 1 user user 3 Jul 29 14:00 foo -> foo
Czy jest to błąd ln
lub czy istnieje przypadek użycia do dowiązania pliku do siebie?
To jest z coreutils 8.21-1ubuntu5.1
.
Odpowiedzi:
To nie jest błąd. Przypadek użycia dotyczy przypadku, gdy chcesz połączyć plik z tą samą nazwą basename, ale w innym katalogu:
cd /tmp
ln -s /etc/passwd
ls -l passwd
lrwxrwxrwx 1 xxx xxx 11 Jul 29 09:10 passwd -> /etc/passwd
Prawdą jest, że kiedy robisz to z nazwą pliku, która znajduje się w tym samym katalogu, tworzy link do siebie, co nie robi wiele dobrego!
Działa to niezależnie od tego, czy używasz dowiązań symbolicznych, czy dowiązań twardych.
Najłatwiejszym sposobem na znalezienie tego jest oczywiście wypróbowanie go i zobaczenie. Jeśli nie podano drugiego argumentu, ln
utworzy link w bieżącym katalogu o takiej samej nazwie jak oryginał:
$ ln -s /etc
$ ls -l
lrwxrwxrwx 1 terdon terdon 4 Jul 29 16:09 etc -> /etc
Wyjaśnia to również man ln
:
W drugim formularzu utwórz link do TARGET w bieżącym katalogu.
„Drugi formularz” odnosi się do:
ln [OPCJA] ... TARGET (2. formularz)
ln -s /path/to/file
jest skrótemln -s /path/to/file .
. Skrótls
jest jakls .
.