Автор (ы) оригинала | AT&T Bell Laboratories |
---|---|
Разработчики) | Различные разработчики с открытым исходным кодом и коммерческие разработчики |
Начальная версия | 3 ноября 1971 г . |
Операционная система | Unix , Unix-подобный , IBM i |
Платформа | Кроссплатформенность |
Тип | Командование |
Лицензия | coreutils : GPLv3 + |
Команда 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] Данный файл на диске может иметь несколько ссылок, разбросанных по иерархии каталогов , причем все ссылки эквивалентны, поскольку все они связаны с одним и тем же индексным дескриптором . [8] Таким образом, создание ссылки не копирует содержимое файла, а просто приводит к тому, что другое имя будет связано с тем же содержимым. Каждый раз, когда создается жесткая ссылка, счетчик ссылок, который является частью структуры inode, увеличивается; файл не удаляется, пока его счетчик ссылок не достигнет нуля. [1] [9]Однако жесткие ссылки могут быть созданы только в одной файловой системе ; это может оказаться недостатком. [10]
- Символические ссылки - это специальные файлы, которые при обнаружении во время разрешения имени пути изменяют разрешение имени пути, чтобы попасть в то место, которое содержит символическая ссылка. Таким образом, содержимое символической ссылки является строкой пути назначения , которую также можно проверить с помощью
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
Ссылки [ править ]
- ^ a b c Керниган, Брайан В .; Пайк, Роб (1984). Среда программирования Unix . Энглвуд Клиффс, Нью-Джерси: Прентис-Холл. п. 59 . ISBN 013937681X.
- ^ a b "GNU Coreutils: вызов" . gnu.org . Фонд свободного программного обеспечения, Inc . Дата обращения 7 августа 2015 .
- ^ "ln - Выпуск 7 базовых спецификаций открытой группы" . pubs.opengroup.org . IEEE и открытая группа . Дата обращения 7 августа 2015 .
- ^ "Почему жесткие ссылки на каталоги в UNIX / Linux запрещены?" . unix.stackexchange.com . Дата обращения 7 августа 2015 .
- ^ a b - Справочник по командам и утилитам, спецификация Single UNIX , выпуск 7 от Open Group
- ^ - Руководство по основным командам Linux
- ^ IBM . «Qshell для программирования IBM System i версии 7.2» (PDF) . Проверено 5 сентября 2020 .
- ^ a b Лусмор, Сандра; Столмен, Ричард М .; МакГрат, Роланд; Орам, Эндрю; Дреппер, Ульрих. Справочное руководство библиотеки GNU C (PDF) . Free Software Foundation, Inc. стр. 392 . Дата обращения 7 августа 2015 .
- ^ «Говоря о UNIX: все дело в индексном узле» . ibm.com . IBM developerWorks . Дата обращения 7 августа 2015 .
- ^ Бовет, Даниэль П .; Чезати, Марко (2005). Понимание ядра Linux (3-е изд.). Бостон, Массачусетс: Интернет-книги по Safari Tech. п. 14. ISBN 0596005652.
- ^ "readlink (1) - справочная страница Linux" . linux.die.net . Дата обращения 7 августа 2015 .
- ^ «Единая спецификация UNIX, версия 4 - Обзор» . unix.org . unix.org . Дата обращения 7 августа 2015 .
Внешние ссылки [ править ]
В Wikibook Guide to Unix есть страница по теме: Утилиты файловой системы - ln |
- - Руководство по командам пользователя Linux
- - Руководство по основным командам FreeBSD
- - Руководство по основным командам NetBSD
- - Руководство по основным командам OpenBSD
- - Руководство по основным командам Darwin и macOS