Символьная ссылка на каталог дает разные результаты в ls -l
зависимости от того, я ln -s dir
или ln -s dir/
. Но в чем же разница, и какую мне лучше выбрать?
30
Там нет разницы. (Будет разница, если целью не будет существующий каталог.)
Последняя косая черта могла закончиться из-за завершения оболочки: с некоторой конфигурацией ln -s tar
TabSpacelink
завершается до ln -s target/ link
.
foo -> bar/
тогдаfoo/qux
эквивалентноbar//qux
. Хотя название вопроса, формально говоря, не включаетfoo -> bar/
, я также обсуждаю этот случай в своем ответе там.Единственное, о чем я могу думать, это то, что он «защищает» вас от того, кто удаляет каталог и создает файл.
Версия с косой чертой прерывается, когда цель заменяется файлом.
источник
Интересный вопрос. Я сделал небольшой тест:
Как видите, нет разницы в количестве системных вызовов (по крайней мере, для ls), и трассировки выглядят очень похоже. Тем не менее, это всего лишь тест дампа, и я не уверен - могут быть некоторые различия.
источник
Ваш вопрос действительно о поведении
ls
программы.1) Если вы делаете,
ls -l $dir
где $ dir на самом деле является символической ссылкой, вы получаете информацию о символической ссылке.2) Если вы делаете,
ls -lL $dir
где $ dir является символической ссылкой на каталог, вы получаете информацию о целевом каталоге.3) Если вы сделаете
ls -l $dir/.
это, вы должны будете перейти по символической ссылке и предоставить информацию о целевом каталоге.4) В противном случае
ls -l $dir/
результаты могут совпадать с № 1 или № 3 в зависимости от используемой версииls
. Я привык к более старой версии Solaris, делающей это как # 1, и был удивлен, что Linux сделал это как # 3.Без косой черты, если вас может беспокоить, является ли заданное имя каталога действительным каталогом, а не символической ссылкой на каталог.
С косой чертой, если вас больше волнуют файлы в каталоге, а не сам каталог.
источник