Ин (Unix)
Оригинальный автор(ы) | AT&T Bell Laboratories |
---|---|
Разработчик(и) | Различные с открытым исходным кодом и коммерческие разработчики разработчики |
Первоначальный выпуск | 3 ноября 1971 г |
Операционная система | Unix , Unix-подобные , IBM i |
Платформа | Кросс-платформенный |
Тип | Команда |
Лицензия | основные утилиты : GPLv3+ |
The ln
Команда — это стандартная командная утилита Unix, используемая для создания жесткой или символической ссылки (символической ссылки) на существующий файл или каталог. [ 1 ] Использование жесткой ссылки позволяет несколько имен файлов связать с одним и тем же файлом, поскольку жесткая ссылка указывает на индексный дескриптор данного файла, данные которого хранятся на диске . С другой стороны, символические ссылки — это специальные файлы, которые ссылаются на другие файлы по имени . [ 2 ]
The ln
команда по умолчанию создает жесткие ссылки, а при вызове с командной строки параметром ln -s
создает символические ссылки. [ 3 ] Большинство операционных систем жестких ссылок на каталоги предотвращают создание , поскольку такая возможность может нарушить структуру файловой системы и помешать работе других утилит. [ 4 ] ln
Однако команду можно использовать для создания символических ссылок на несуществующие файлы. [ 2 ]
Версии
[ редактировать ]ln
появился во втором выпуске Руководства по переносимости X/Open . [ 5 ] Версия ln
включенный в состав GNU coreutils, был написан Майком Паркером и Дэвидом Маккензи. [ 6 ]
Команда доступна в виде отдельного пакета для Microsoft Windows как часть UnxUtils коллекции , состоящей из собственных Win32- портов распространенных GNU Unix-подобных утилит. [ 7 ] Команда ln также была перенесена в операционную систему IBM i . [ 8 ]
Ссылки
[ редактировать ]Ссылки позволяют более чем одному имени файла ссылаться на один и тот же файл, как в случае жесткой ссылки, или действовать как указатели на имя файла, как в случае мягкой ссылки . Как жесткие ссылки, так и мягкие ссылки могут быть созданы с помощью ln
команда. Конкретно,
- Жесткие ссылки , также известные как ссылки, представляют собой объекты, которые связывают имя файла с индексным дескриптором и, следовательно, с самим содержимым файла. [ 1 ] Данный файл на диске может иметь несколько ссылок, разбросанных по иерархии каталогов , причем все ссылки эквивалентны, поскольку все они связаны с одним и тем же индексным дескриптором . [ 9 ] Таким образом, создание ссылки не копирует содержимое файла, а просто связывает другое имя с тем же содержимым. Каждый раз, когда создается жесткая ссылка, счетчик ссылок , являющийся частью структуры индексного дескриптора , увеличивается; файл не удаляется до тех пор, пока его счетчик ссылок не достигнет нуля. [ 1 ] [ 10 ] Однако жесткие ссылки могут быть созданы только в одной и той же файловой системе ; это может оказаться недостатком. [ 11 ]
- Символические ссылки — это специальные файлы, которые при обнаружении во время разрешения пути изменяют разрешение пути , которое должно быть перенесено в место, которое содержит символическая ссылка. Таким образом, содержимое символической ссылки представляет собой строку пути назначения , которую также можно проверить с помощью
readlink
утилита командной строки. [ 12 ] Символическая ссылка может содержать произвольную строку, которая не относится к местоположению существующего файла. Такая символическая ссылка не будет работать до тех пор, пока в месте, указанном символической ссылкой, не будет создан файл. Напротив, символическая ссылка на существующий файл не будет работать, если существующий файл будет перемещен в другое место (или переименован). [ 9 ]
Спецификация
[ редактировать ]The ln
Утилита в системах, совместимых с Единой спецификацией Unix, указана в документе Shell and Utilities (XCU), который является частью Единой спецификации Unix. [ 13 ] Практически идентичный документ является частью POSIX . [ 5 ]
Спецификация описывает два способа вызова ln
полезность. Конкретно,
- При вызове «одного файла»
ln
Утилита создает новую жесткую ссылку (запись каталога) для исходного файла, указанногоsource_file
операнд по пути назначения, указанномуtarget_file
операнд. Однако, если-s
указана опция, создается символическая ссылка. ln [-fs] [-L|-P] source_file target_file
- При вызове «множественного файла»
ln
утилита создает новую жесткую ссылку ( запись каталога ), или если-s
указывается опция, символическая ссылка, для каждого файла, указанного в параметреsource_file
операнд по пути назначения в существующем каталоге, указанном операндомtarget_dir
. ln [-fs] [-L|-P] source_file_1 source_file_2 ... target_dir
- При вызове «одного файла»
В спецификации также указаны параметры командной строки, которые должны поддерживаться:
-f
Принудительно удалите существующие пути назначения, чтобы разрешить ссылку.-L
Для каждогоsource_file
операнд, который называет файл, являющийся символической ссылкой, создает жесткую ссылку на файл, на который указывает символическая ссылка.-P
Для каждогоsource_file
операнд, который называет файл, являющийся символической ссылкой, создает (жесткую) ссылку на саму символическую ссылку.-s
Создавайте символические ссылки вместо жестких ссылок. Если указана опция -s, опции -L и -P игнорируются.- Если более одного взаимоисключающего варианта
-L
и-P
указана последняя указанная опция, определяющая поведение утилиты. - Если
-s
опция не указана и ни-L
ни-P
указана опция, реализация определяет, какой из-L
и-P
параметры будут использоваться по умолчанию.
Если ни целевой файл, ни целевой каталог не указаны, ссылки будут созданы в текущем рабочем каталоге .
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Jump up to: а б с Керниган, Брайан В.; Пайк, Роб (1984). Среда программирования Unix . Энглвуд Клиффс, Нью-Джерси: Прентис-Холл. п. 59 . ISBN 013937681X .
- ^ Jump up to: а б «GNU Coreutils: вызов» . gnu.org . Фонд свободного программного обеспечения, Inc. Проверено 7 августа 2015 г.
- ^ «ln — Базовые спецификации открытой группы, выпуск 7» . pubs.opengroup.org . IEEE и Открытая группа . Проверено 7 августа 2015 г.
- ^ «Почему в UNIX/Linux не разрешены жесткие ссылки на каталоги?» . unix.stackexchange.com . Проверено 7 августа 2015 г.
- ^ Jump up to: а б Единая спецификация UNIX , версия 4 от Open Group. – Справочник по оболочке и утилитам,
- ^ Linux по основным командам Руководство –
- ^ «Собственные порты Win32 некоторых утилит GNU» . unxutils.sourceforge.net .
- ^ ИБМ . «Программирование Qshell в IBM System i версии 7.2» (PDF) . ИБМ . Проверено 05 сентября 2020 г.
- ^ Jump up to: а б Лусмор, Сандра; Столлман, Ричард М.; МакГрат, Роланд; Орам, Эндрю; Дреппер, Ульрих. Справочное руководство по библиотеке GNU C (PDF) . Фонд свободного программного обеспечения, 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 г.
Внешние ссылки
[ редактировать ]- Linux пользователя по командам Руководство –
- FreeBSD по основным командам Руководство –
- NetBSD по общим командам Руководство –
- OpenBSD по общим командам Руководство –
- Darwin и macOS по общим командам Руководство –