Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

Команда lnпредставляет собой стандартную командную утилиту Unix, используемую для создания жесткой ссылки или символической ссылки (символической ссылки) на существующий файл или каталог. [1] Использование жесткой ссылки позволяет связывать несколько имен файлов с одним и тем же файлом, поскольку жесткая ссылка указывает на индексный дескриптор данного файла, данные которого хранятся на диске . С другой стороны, символические ссылки - это специальные файлы, которые ссылаются на другие файлы по имени . [2]

lnКоманда по умолчанию создает жесткие ссылки, и при вызове с командной строкой параметром ln -s создает символические ссылки. [3] Большинство операционных систем предотвращают создание жестких ссылок на каталоги , поскольку такая возможность может нарушить структуру файловой системы и помешать работе других утилит. [4] Однако lnэту команду можно использовать для создания символических ссылок на несуществующие файлы. [2]

История [ править ]

ln появился в Выпуске 2 Руководства по переносимости X / Open . [5]ln Встроенная в GNU coreutils версия была написана Майком Паркером и Дэвидом Маккензи. [6] Команда ln также была перенесена в операционную систему IBM i . [7]

Ссылки [ править ]

Ссылки позволяют более чем одному имени файла ссылаться на один и тот же файл, как в случае жесткой ссылки, или действовать как указатели на имя файла, как в случае мягкой ссылки . С помощью lnкоманды можно создавать как жесткие, так и программные ссылки . Конкретно,

  1. Жесткие ссылки , также известные как ссылки, представляют собой объекты, которые связывают имя файла с индексным дескриптором и, следовательно, с самим содержимым файла. [1] Данный файл на диске может иметь несколько ссылок, разбросанных по иерархии каталогов , причем все ссылки эквивалентны, поскольку все они связаны с одним и тем же индексным дескриптором . [8] Таким образом, создание ссылки не копирует содержимое файла, а просто приводит к тому, что другое имя будет связано с тем же содержимым. Каждый раз, когда создается жесткая ссылка, счетчик ссылок, который является частью структуры inode, увеличивается; файл не удаляется, пока его счетчик ссылок не достигнет нуля. [1] [9]Однако жесткие ссылки могут быть созданы только в одной файловой системе ; это может оказаться недостатком. [10]
  2. Символические ссылки - это специальные файлы, которые при обнаружении во время разрешения имени пути изменяют разрешение имени пути, чтобы попасть в то место, которое содержит символическая ссылка. Таким образом, содержимое символической ссылки является строкой пути назначения , которую также можно проверить с помощью readlinkутилиты командной строки. [11] Символьная ссылка может содержать произвольную строку, которая не указывает на расположение существующего файла. Такая символическая ссылка не будет работать до тех пор, пока файл не будет создан в месте, содержащемся в символической ссылке. Напротив, символическая ссылка на существующий файл не будет работать, если существующий файл будет перемещен в другое место (или переименован). [8]

Спецификация [ править ]

lnУтилита для систем , совместимых со спецификацией Single Unix указана в Shell и утилиты (XCU) документе, который образует часть спецификации Single Unix. [12] В основном идентичный документ является частью POSIX . [5]

В спецификации описаны два способа вызова lnутилиты. Конкретно,

При вызове «одного файла» lnутилита создает новую жесткую ссылку (запись в каталоге) для исходного файла, указанного source_fileоперандом, по пути назначения, указанному target_fileоперандом. Однако, если -sопция указана, создается символическая ссылка.
ln [ -fs ]  [ -L | -P ] исходный_файл целевой_файл
При вызове «нескольких файлов» lnутилита создает новую жесткую ссылку ( запись каталога ) или, если -sуказана опция, символическую ссылку для каждого файла, указанного source_fileоперандом, по пути назначения в существующем каталоге, названном операндом target_dir.
ln [ -fs ]  [ -L | -P ] исходный_файл_1 исходный_файл_2 ... целевой_директор

В спецификации также указаны параметры командной строки, которые должны поддерживаться:

-f Принудительно удалить существующие пути назначения, чтобы разрешить ссылку.
-L Для каждого source_fileоперанда, называющего файл, являющийся символической ссылкой, создайте жесткую ссылку на файл, на который указывает символическая ссылка.
-P Для каждого source_fileоперанда, который называет файл, который является символической ссылкой, создайте (жесткую) ссылку на саму символическую ссылку.
-s Создавайте символические ссылки вместо жестких. Если указан параметр -s, параметры -L и -P игнорируются.
Если более чем один из взаимоисключающих вариантов -Lи -Pопределен последний вариант , указанный определяет поведение утилиты.
Если -sпараметр не указан , и ни -Lни -Pзадана опция, настройки реализации которых из -Lи -Pвариантов будет использоваться по умолчанию.

Если ни целевой файл, ни целевой каталог не указаны, ссылки будут созданы в текущем рабочем каталоге .

См. Также [ править ]

  • Список команд Unix
  • Точка соединения NTFS

Ссылки [ править ]

  1. ^ a b c Керниган, Брайан В .; Пайк, Роб (1984). Среда программирования Unix . Энглвуд Клиффс, Нью-Джерси: Прентис-Холл. п. 59 . ISBN 013937681X.
  2. ^ a b "GNU Coreutils: вызов" . gnu.org . Фонд свободного программного обеспечения, Inc . Дата обращения 7 августа 2015 .
  3. ^ "ln - Выпуск 7 базовых спецификаций открытой группы" . pubs.opengroup.org . IEEE и открытая группа . Дата обращения 7 августа 2015 .
  4. ^ "Почему жесткие ссылки на каталоги в UNIX / Linux запрещены?" . unix.stackexchange.com . Дата обращения 7 августа 2015 .
  5. ^ a b ln  - Справочник по командам и утилитам, спецификация Single UNIX , выпуск 7 от Open Group
  6. ^ ln(1)  -  Руководство по основным командам Linux
  7. ^ IBM . «Qshell для программирования IBM System i версии 7.2» (PDF) . Проверено 5 сентября 2020 .
  8. ^ a b Лусмор, Сандра; Столмен, Ричард М .; МакГрат, Роланд; Орам, Эндрю; Дреппер, Ульрих. Справочное руководство библиотеки GNU C (PDF) . Free Software Foundation, Inc. стр. 392 . Дата обращения 7 августа 2015 .
  9. ^ «Говоря о UNIX: все дело в индексном узле» . ibm.com . IBM developerWorks . Дата обращения 7 августа 2015 .
  10. ^ Бовет, Даниэль П .; Чезати, Марко (2005). Понимание ядра Linux (3-е изд.). Бостон, Массачусетс: Интернет-книги по Safari Tech. п. 14. ISBN 0596005652.
  11. ^ "readlink (1) - справочная страница Linux" . linux.die.net . Дата обращения 7 августа 2015 .
  12. ^ «Единая спецификация UNIX, версия 4 - Обзор» . unix.org . unix.org . Дата обращения 7 августа 2015 .

Внешние ссылки [ править ]

  • ln(1) -  Руководство по командам пользователя Linux
  • ln(1) -  Руководство по основным командам FreeBSD
  • ln(1) -  Руководство по основным командам NetBSD
  • ln(1) -  Руководство по основным командам OpenBSD
  • ln(1) -  Руководство по основным командам Darwin и macOS