ls -l показывает каталог с символическими ссылками с двумя завершающими слешами

265
MiniLud

Я просто скопировал свой ~/.configкаталог в другой и сделал ссылку на него $HOME.

Когда я запускаю ls -lэто выглядит так с двойной косой чертой в конце:

lrwxrwxrwx 1 lud lud 22 Jul 23 20:25 .config -> /home/lud/dots/config// 

Я не могу вспомнить, видел ли я это раньше. Я посмотрел на другой каталог с символическими ссылками, чтобы увидеть, происходит ли одна и та же вещь повсюду, но у другого каталога с символическими ссылками в конце есть только один обратный слеш.

Симлинк работает. Не похоже, что что-то сломано. Мне просто интересно, означает ли дополнительная косая черта что-нибудь, или она вообще должна быть там.

0

2 ответа на вопрос

2
Kamil Maciorowski

POSIX определяет:

3.271 Путь

[…] Путь может дополнительно содержать один или несколько завершающих <slash>символов. Несколько последовательных <slash>символов считаются одинаковыми <slash>, за исключением случая, когда в нем ровно два ведущих <slash>символа.

Каждая из этих ссылок должна работать:

.config -> /home/lud/dots/config// .config -> /home/lud/dots/config/ .config -> /home/lud/dots/config 

(Хотя, если бы это /home/lud/dots/configбыл файл, только последний путь сделал бы допустимую символическую ссылку).

Ваша символическая ссылка является тем, чем она является, потому что она была создана таким образом (если этот другой ответ не применяется). Вы, очевидно, дали целевой путь с двумя конечными косыми чертами, и он оказался правильным путем. Обратите внимание, что вы можете ссылаться практически на все; эта команда

ln -s path/that//may///not/exist/foo//// baz 

создаст символическую ссылку

baz -> path/that//may///not/exist/foo//// 

Сама символическая ссылка, скорее всего, будет повреждена, потому что у вас нет каталога foo/по этому пути. Существование цели имеет значение, когда вы пытаетесь использовать символическую ссылку, ln -sхотя это не имеет значения . Если path/that/may/not/exist/foo/существует, символическая ссылка будет работать.

1
grawity

Если у вас есть псевдоним, который сопоставляет lsк ls -F, это будет суффикс всех имен файлов в зависимости от их типа.

Когда эта опция включена, ко всем путям к каталогам добавляется суффикс /. Поэтому, если в целевом пути символической ссылки уже хранится один конечный обратный слеш, вы увидите два.

Чтобы увидеть, так ли это, перечислите ваши псевдонимы с помощью `alias -p`. Kamil Maciorowski 5 лет назад 0