разница между / dir и / dir /

Рассмотрим символическую ссылку, которую я делаю в свой музыкальный каталог с именем music .

 ln -s Music music 

теперь рассмотрим следующую последовательность команд:

 edward@ArchLinux:~$ readlink music Music edward@ArchLinux:~$ readlink music/ edward@ArchLinux:~$ 

Я получаю вывод только в том случае, если я не использую / в конце имени символической ссылки.

Интересно, отличаются ли /dir и /dir/ . Может кто-нибудь объяснить?

  • Непоследовательность в поведении «rm» при подключенном томе?
  • Керниган и проблема Пайка: как поместить косую черту в имя файла?
  • Косая черта, не обнаруженная в команде «grep»
  • Как удалить файл с именем «filen / ame» (с косой чертой) в файловой системе ext4 в debugfs?
  • Почему может быть создана программная ссылка на каталог с или без косой черты?
  • Шебанг, начинающийся с `//`?
  • Когда символическая ссылка рассматривается как вещь, на которую она ссылается, и как символическая ссылка?
  • cd с двойной косой чертой вечно на Mac OS X Terminal
  • 2 Solutions collect form web for “разница между / dir и / dir /”

    readlink ожидает символическую ссылку, а затем отображает файл / каталог, на который указывает символическая ссылка.

    • в вашей первой попытке: он видит символическую ссылку, поэтому он отображает то, на что указывает
    • в вашей второй попытке: он видит музыку /., которая является Music /. который является указанным каталогом, а не символической ссылкой, указывающей на этот каталог, поэтому у него нет ссылки для интерпретации. (Другими словами, когда вы добавляете окончательный «/», дескриптор файла оболочки используется для указанного каталога).

    В Unix все дескриптор файла .

    В этом случае «все» включает в себя обычные файлы, каталоги, разделы (например, /dev/sda1 ), устройства (например, /dev/sda ), виртуальные устройства (например, /dev/null ) и символические ссылки.

    Но что такое «файловый дескриптор» в этом случае? Это запись в корневой файловой системе, указывающая на местоположение данных на вашем диске или в памяти (для виртуальных файлов). Обратите внимание, что, например, в ext? -filesystems есть еще один уровень абстракции между файловым дескриптором и данными, называемыми «inode».

    Таким образом, в вашем примере music представляет собой символическую ссылку, которая представлена ​​файловым дескриптором, как и любой другой файл или каталог. Но у него есть специальный флаг, чтобы идентифицировать его как символическую ссылку, где в каталоге будет установлен еще один флаг, определяющий его как таковой. Теперь система может интерпретировать символическую ссылку, которая на самом деле является просто строкой, содержащей абсолютный или относительный путь к цели.

    Он интерпретируется только как каталог, если вы явно пишете / за ним, иначе он рассматривается как файл.

    Linux и Unix - лучшая ОС в мире.