Warum ist „ln -s A B“ anders als „ln -s A/ B“?

Warum ist „ln -s A B“ anders als „ln -s A/ B“?

Ist Adas nicht dasselbe wie A/?

Warum werden sie unterschiedlich behandelt ln?

Antwort1

BEARBEITEN: Ich habe die Frage falsch gelesen – ich dachte, Sie fragen nach ls, aber Sie haben nach gefragt ln– danke, Martijn, für den Kommentar.

Ich sehe jedenfalls auf meiner Seite keinen Unterschied:

$ mkdir 1
$ touch 2
$ ls -l
total 4
drwxr-xr-x 2 user user 4096 2010-12-20 21:48 1
-rw-r--r-- 1 user user    0 2010-12-20 21:48 2
$ ln -s 1 3
$ ln -s 1/ 3s
$ ln -s 2 4
$ ln -s 2/ 4s
$ ls -l
total 4
drwxr-xr-x 2 user user 4096 2010-12-20 21:48 1
-rw-r--r-- 1 user user    0 2010-12-20 21:48 2
lrwxrwxrwx 1 user user    1 2010-12-20 21:48 3 -> 1
lrwxrwxrwx 1 user user    2 2010-12-20 21:48 3s -> 1/
lrwxrwxrwx 1 user user    1 2010-12-20 21:48 4 -> 2
lrwxrwxrwx 1 user user    2 2010-12-20 21:48 4s -> 2/

lsWas meine vorherige Bearbeitung betrifft …

Unterschiede können beispielsweise bei symbolischen Links bestehen:

$ ls -l
total 0
$ mkdir 1
$ echo 1>1/a
$ find
.
./1
./1/a
$ ln -s 1 2
$ ls -l
total 4
drwxr-xr-x 2 user user 4096 2010-12-19 13:17 1
lrwxrwxrwx 1 user user    1 2010-12-19 13:17 2 -> 1
$ ls -l 1
total 4
-rw-r--r-- 1 user user 1 2010-12-19 13:17 a
$ ls -l 2
lrwxrwxrwx 1 user user 1 2010-12-19 13:17 2 -> 1
$ ls -l 2/
total 4
-rw-r--r-- 1 user user 1 2010-12-19 13:17 a

Es ist besser, es sich so vorzustellen:

  • ls AListenA
  • ls A/tatsächlich Listen A/., wobei .eine spezielle Datei ist, die das aktuelle Verzeichnis bezeichnet

Bei symbolischen Links wird daher ls Ader symbolische Link aufgelistet, während bei ls A/== ls A/.der Inhalt des Ordners aufgelistet wird, auf den der symbolische Link zeigt.

Weitere Einzelheiten finden Sie hier:

Abschnitt 4.12 Pfadnamenauflösung.

verwandte Informationen