Команда Ln s linux

Обновлено: 02.07.2024

В этой статье мы поговорим о том, как создавать символические ссылки между файлами. Мы также обсудим несколько полезных примеров, чтобы понять основы работы команды ln. Все примеры реализованы в дистрибутиве Ubuntu 20.04.

Синтаксис команды ln

С помощью команды ln вы можете создавать символические ссылки между файлами. Эта команда по умолчанию создает жесткие ссылки на файл. Однако использование опции (-s или –symbolic) также может создавать символические ссылки. Ниже приведен синтаксис команды ln:

Команда ln создает ссылку из указанного файла (имя файла) на второй аргумент (имя ссылки). Однако второй аргумент не указан или в качестве второго аргумента используется только (.); затем он создаст ссылку указанного файла на текущий каталог.

В системе Linux существует два разных типа ссылок: программные или символические ссылки и жесткие ссылки.

Создание жестких ссылок на файл

Жесткая ссылка может создавать в файле одну или несколько ссылок. Вы не можете создавать жесткие ссылки для файлов и каталогов в другом разделе или файловой системе. Самый простой способ создать жесткие ссылки — использовать команду ln.

Приведенная выше команда создает жесткую ссылку с именем link_file.


Создание символической или программной ссылки на файл

Символическая ссылка — это косвенный указатель на файл. В отличие от жестких ссылок, символическая или символическая ссылка может указывать на один файл или каталог в другом разделе или файловой системе. Чтобы создать символическую или программную ссылку, используйте параметр -s вместе с командой ln следующим образом:

Приведенная выше команда создает символическую ссылку с именем link_test_file.

Чтобы отобразить созданную программную ссылку, используйте следующую команду ls:


Создать символическую ссылку на каталог

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

Например, мы создаем символическую ссылку из каталога /home/kbuzdar/test-composer-project в каталог ~/my_project с помощью следующей команды:


Перезаписать существующую символическую ссылку

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


Используя параметр «-f», вы можете принудительно перезаписать существующую символическую ссылку следующим образом:

Приведенное выше действие принудительно создаст уже существующую символическую ссылку.


Заключение

В этом руководстве мы обсудили, как использовать команду ln. Мы упомянули различные примеры создания символических ссылок с помощью команды ln. Кроме того, мы обсудили, как создавать ссылки между файлами и каталогами с помощью команды ln. Я надеюсь, что приведенные выше примеры помогут вам понять команду ln. Узнайте больше о команде ln, используя справочную страницу команды ln.

Об авторе

Карим Буздар

Карим Буздар имеет степень инженера в области телекоммуникаций и несколько сертификатов системного администратора. Как ИТ-инженер и технический автор, он пишет для различных веб-сайтов. Он ведет блог на LinuxWays.

В Unix-подобных операционных системах команда ln создает связи между файлами, связывая имена файлов с данными файла.

Эта страница посвящена версии ln для GNU/Linux.

Описание

ln создает ссылку на файл TARGET с именем LINKNAME. Если LINKNAME опущено, в текущем каталоге создается ссылка на TARGET с использованием имени TARGET в качестве LINKNAME.

ln по умолчанию создает жесткие ссылки или символические ссылки, если указан параметр -s (--symbolic). При создании жестких ссылок должен существовать каждый TARGET.

Что такое ссылка?

Прежде чем мы обсудим команду ln, давайте сначала обсудим команду link, что такое ссылка и как она связана с файлами, какими мы их знаем.

Ссылка — это запись в вашей файловой системе, которая связывает имя файла с фактическими байтами данных на диске. Несколько имен файлов могут «связываться» с одними и теми же данными. Вот пример. Давайте создадим файл с именем file1.txt:

Эта команда отображает строку "Это файл".Обычно это будет выводиться на наш терминал, но оператор > перенаправляет текст строки в файл file1.txt. Мы можем проверить, что это сработало, используя cat для отображения содержимого файла:

Когда этот файл был создан, операционная система записала байты в место на диске, а также связала эти данные с именем файла, file1.txt, чтобы мы могли ссылаться на файл в команды и аргументы. Если вы переименуете файл, содержимое файла не изменится; только та информация, которая указывает на него. Имя файла и данные файла — это два отдельных объекта.

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

file1.txt

Использование команды ссылки

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

Назовем нашу новую ссылку file2.txt. Как мы его создаем?

Общая форма команды ссылки: "ссылка имя_файла имя_ссылки". Наш первый аргумент — это имя файла, данные которого мы связываем; второй аргумент — это имя новой ссылки, которую мы создаем.

Теперь файлы file1.txt и file2.txt указывают на одни и те же данные на диске:

Важно понимать, что мы не делали копию этих данных. Оба имени файла указывают на одни и те же байты данных на диске. Вот иллюстрация, которая поможет вам визуализировать это:

file1.txt и file2.txt связаны с одним и тем же данные

Если мы изменим содержимое данных, на которые указывает один из этих файлов, содержимое другого файла также изменится. Добавим к одному из них строку с помощью оператора >>:

Теперь давайте посмотрим на содержимое файла file1.txt:

<р>. а теперь давайте посмотрим на второй файл, который мы создали с помощью команды link:

Оба файла показывают изменение, потому что они используют одни и те же данные на диске. Изменения в данных одного из этих файлов изменяют содержимое другого.

Но что, если мы удалим один из файлов? Будут ли удалены оба файла?

Нет. Если мы удаляем один из файлов, мы удаляем одну из ссылок на данные. Поскольку мы создали другую ссылку вручную, у нас все еще есть указатель на эти данные; у нас все еще есть способ на уровне пользователя получить доступ к данным, которые мы туда поместили. Итак, если мы воспользуемся командой rm для удаления нашего первого файла:

<р>. он больше не существует как файл с таким именем:

<р>. но ссылка на данные, которые мы создали вручную, по-прежнему существует и по-прежнему указывает на данные:

Как видите, данные остаются на диске даже после удаления "файла" (фактически являющегося ссылкой на данные). Мы по-прежнему можем получить доступ к этим данным, пока есть ссылка на них. Это важно знать, когда вы удаляете файлы — «удаление» файла делает данные недоступными из-за разрыва связи с ним. Данные по-прежнему существуют на носителе где-то, недоступные для системы, и это место на диске помечено как доступное для использования в будущем.

Тип ссылки, с которой мы здесь работали, иногда называют "жесткой" ссылкой. Жесткая ссылка и данные, на которые она ссылается, всегда должны находиться в одной и той же файловой системе; вы не можете, например, создать жесткую ссылку в одном разделе на файловые данные, хранящиеся в другом разделе. Вы также не можете создать жесткую ссылку на каталог. Только символические ссылки могут ссылаться на каталог; мы вернемся к этому через минуту.

Разница между ln и ссылкой

А как же ln? Вот почему мы здесь, верно?

ln по умолчанию создает жесткую ссылку, как это делает ссылка. Итак, эта команда ln:

<р>. аналогична следующей команде ссылки:

<р>. потому что обе команды создают жесткую ссылку с именем file2.txt, которая ссылается на данные файла file1.txt.

Однако мы также можем использовать ln для создания символических ссылок с опцией -s. Итак, команда:

Создайте символическую ссылку на файл1.txt с именем file2.txt. В отличие от нашего примера с жесткой ссылкой, вот иллюстрация, которая поможет вам визуализировать нашу символическую ссылку:

file2.txt с символической ссылкой на file1.txt

Что такое символические ссылки?

Символические ссылки, иногда называемые "мягкими" ссылками, отличаются от "жестких" ссылок. Вместо ссылки на данные файла они ссылаются на другую ссылку. Таким образом, в приведенном выше примере file2.txt указывает на ссылку file1.txt, которая, в свою очередь, указывает на данные файла.

Это имеет несколько потенциальных преимуществ. Во-первых, символические ссылки (также называемые для краткости «симлинками») могут ссылаться на каталоги.Кроме того, символические ссылки могут пересекать границы файловой системы, поэтому символическая ссылка на данные на одном диске или разделе может существовать на другом диске или разделе.

Вы также должны знать, что, в отличие от жестких ссылок, удаление файла (или каталога), на который указывает символическая ссылка, разрывает ссылку. Итак, если мы создадим файл file1.txt:

<р>. и создайте на него символическую ссылку:

<р>. мы можем использовать любой из них, чтобы увидеть содержимое:

<р>. но если мы удалим файл1.txt:

<р>. мы больше не можем получить доступ к содержащимся в нем данным с помощью нашей символической ссылки:

Поначалу это сообщение об ошибке может сбить с толку, поскольку файл file2.txt все еще существует в вашем каталоге. Однако это неработающая символическая ссылка — символическая ссылка, указывающая на то, чего больше не существует. Операционная система пытается перейти по символической ссылке на файл, который должен быть там (file1.txt), но ничего не находит и возвращает сообщение об ошибке.

Хотя жесткие ссылки являются важным компонентом работы операционной системы, символические ссылки, как правило, более удобны. Вы можете использовать их для ссылки любым способом на информацию, которая уже находится на диске в другом месте.

Создание символических ссылок на каталоги

Чтобы создать символическую ссылку на каталог, укажите имя каталога в качестве цели. Например, предположим, что у нас есть каталог с именем documents, который содержит один файл с именем file.txt.

Давайте создадим символическую ссылку на документы с именем dox. Эта команда сделает свое дело:

Теперь у нас есть символическая ссылка с именем dox, на которую мы можем ссылаться как на документы каталога. Например, если мы используем ls для вывода списка содержимого каталога, а затем для вывода списка содержимого каталога с символической ссылкой, они оба будут показывать один и тот же файл:

Когда мы сейчас работаем в каталоге dox, мы на самом деле работаем с документами, но мы видим слово dox вместо документов во всех путях.

Символические ссылки — удобный способ сократить путь к длинным и сложным путям. Например, эта команда:

<р>. избавляет нас от необходимости печатать; теперь вместо смены каталога с помощью следующей команды:

<р>. вместо этого мы можем сделать это:

Обычно вы удаляете каталоги (когда они пусты) с помощью команды rmdir. Но наша символическая ссылка на самом деле не является каталогом: это файл, который указывает на каталог. Итак, чтобы удалить нашу символическую ссылку, мы используем команду rm:

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

Синтаксис

Параметры

Вот параметры, которые можно передать команде ln.

< tr < td>Создавайте символические ссылки относительно местоположения ссылки. < /tr>
--backup[=CONTROL] Используйте этот параметр, чтобы дополнительно создать резервную копию каждого существующий файл назначения. Стиль резервного копирования дополнительно определяется значением CONTROL. Для получения дополнительной информации см. параметры резервного копирования ниже.
-b Эта функция аналогична --backup, но вы не можете указать CONTROL; используется стиль по умолчанию (простой).
-d, -F, --directory Эта опция позволяет суперпользователю попытаться жестко связать каталоги (хотя это, вероятно, не удастся из-за системных ограничений, даже для суперпользователя).
-f, --force Если файл или файлы назначения уже существуют, перезапишите их.
-i, --interactive Запрашивать пользователя перед перезаписью файлов назначения.
-L, --logical Разыменование TARGET, которые являются символическими ссылками. Другими словами, если вы пытаетесь создать ссылку (или символическую ссылку) на символическую ссылку, ссылайтесь на то, на что она ссылается, а не на саму символическую ссылку.
-n , --no-dereference Обрабатывать LINKNAME как обычный файл, если это символическая ссылка на каталог.
- P, --physical Сделайте жесткие ссылки непосредственно на символические ссылки, а не разыменовывайте их.
-r, --relative
-s, --symbolic Создавайте символические ссылки вместо жестких ссылок.
-S, --suffix=SUFFIX Используйте суффикс файла SUFFIX, а не суффикс по умолчанию "~ ".
-t, --target-directory=КАТАЛОГ Укажите КАТАЛОГ для создания ссылок.
-T, --no-target-directory Всегда рассматривать ИМЯ_ССЫЛКИ как обычный файл .
-v, --verbose Действовать подробно; вывести имя каждого связанного файла.
--help Показать справочное сообщение и выйти.
--version Показать информацию о версии и выйти.

Опция --backup

При использовании параметра --backup (или -b) суффикс файла по умолчанию для резервных копий будет "~". Однако вы можете изменить это, используя параметр --suffix или задав переменную среды SIMPLE_BACKUP_SUFFIX.

Аргумент CONTROL параметра --backup указывает метод управления версиями.Кроме того, его можно указать, установив переменную среды VERSION_CONTROL. Вот значения, которые можно использовать для любого из них:

нет, выкл Никогда не делать резервные копии (даже если указан параметр --backup).
пронумеровано, t Создать пронумерованные резервные копии.
существующие, ноль Пронумеровано, если существуют пронумерованные резервные копии, в противном случае просто.
просто, никогда Всегда делать простые резервные копии.

Если вы используете -b вместо --backup, метод CONTROL всегда простой.

Если вы укажете параметр -s (символические ссылки), ln игнорирует параметры -L и -P. В противном случае (если вы создаете жесткие ссылки) последняя указанная опция управляет поведением, когда TARGET является символической ссылкой. По умолчанию действует так, как если бы была указана опция -P.

Примеры

Создайте жесткую ссылку на файл public_html/myfile1.txt в текущем каталоге.

Создайте символическую ссылку на файл public_html/myfile1.txt в текущем каталоге.

Создайте символическую ссылку на каталог public_html с именем webstuff.

Создает символическую ссылку на файл file1.txt с именем file2.txt. Если файл file2.txt уже существует, он переименовывается в file2.txt~ перед созданием новой символической ссылки file2.txt.

Связанные команды

chmod — изменить права доступа к файлам или каталогам.
link — создать жесткую ссылку на обычный файл.
ls — просмотреть содержимое каталога или каталогов.
readlink — распечатать значение символической ссылки или канонического имени файла.
unlink — удалить файл.

Жесткие и программные ссылки упрощают создание эффективных структур файлов и папок в Linux

Гэри Ньюэлл был внештатным сотрудником, разработчиком приложений и тестировщиком программного обеспечения с более чем 20-летним опытом работы в сфере ИТ, работая с Linux, UNIX и Windows.

Крис Селф (Chris Selph) — сертифицированный CompTIA преподаватель технологии и профессиональный преподаватель информационных технологий. Он также работает администратором сети и сервера и выполняет обслуживание и ремонт компьютеров для многочисленных клиентов.

Что нужно знать

  • Создайте жесткую ссылку: ln /path/to/file /path/to/hardlink. Проверьте, сколько файлов ссылается на один и тот же индекс, с помощью команды ls: ls -lt
  • Создайте символическую ссылку: ln -s /путь/к/файлу /путь/к/ссылке. Избегайте перезаписи существующей ссылки: ln -s -b /путь/к/файлу /путь/к/ссылке
  • Чтобы перезаписать существующую ссылку: ln -s -f /путь/к/файлу /путь/к/ссылке. Чтобы получить предупреждение о перезаписи: ln -s -i /path/to/file /path/to/link

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

Начало работы

Linux поддерживает два основных метода связывания:

  • Жесткие ссылки: ссылки на реальный файл в системе Linux.
  • Мягкие ссылки: аналогичны ярлыку Windows, который указывает на исходное местоположение файла. Также известна как символическая ссылка.

Что такое жесткая ссылка?

Инод определяет каждый файл в вашей файловой системе. В большинстве случаев вы не используете этот номер, но его важность становится очевидной, когда вы создаете жесткую ссылку.

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

Жесткая ссылка облегчает эффективную категоризацию файлов. Например, в своей фотоколлекции создайте одну папку с названием «Фото с отдыха» и другую папку с названием «Детские фотографии». Вместо того, чтобы копировать фотографию ваших детей из отпуска в обе папки, поместите ее в одну, а затем создайте жесткую ссылку на нее в другой папке.

Выполните следующую команду, чтобы создать жесткую ссылку:

Фотография Брайтон-Бич в папке с праздничными фотографиями ссылается на папку с детскими фотографиями с помощью команды:

Проверьте, сколько файлов ссылается на один и тот же индексный дескриптор, используя команду ls следующим образом:

Вывод будет примерно таким -rw-r--r-- 1 имя пользователя имя группы дата имя файла.

Первая часть вывода показывает разрешения пользователя, но важной частью является число после разрешений и перед именем пользователя.

Снимок экрана с результатами команды ls -lt

Если число равно 1, это единственный файл, указывающий на конкретный индексный дескриптор (то есть он не связан). Если число больше 1, то оно жестко связано двумя или более файлами.


Что такое символическая ссылка?

Символическая ссылка похожа на ярлык от одного файла к другому. Содержимое символической ссылки – это адрес файла или папки, на которые делается ссылка.

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

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

Создать символическую ссылку

Чтобы создать символическую ссылку, используйте следующий синтаксис:

Если вы беспокоитесь о перезаписи существующей ссылки, используйте ключ -b следующим образом:

Этот переключатель создает резервную копию ссылки, если она существует. Он создает то же имя файла, но с тильдой в конце. Если файл с тем же именем, что и символическая ссылка, существует, вы получите сообщение об ошибке.

Заставьте ссылку перезаписать файл с помощью следующей команды:

Не используйте ключ -f без ключа -b, так как вы потеряете исходный файл.

Получите сообщение с вопросом, хотите ли вы перезаписать файл, если он существует:

Большинство современных файловых менеджеров в Linux позволяют создавать символические ссылки с помощью графического интерфейса. Например, с помощью диспетчера файлов Thunar внутри любой папки щелкните правой кнопкой мыши пустую область списка файлов и выберите «Создать символическую ссылку».

Скриншот создания символической ссылки в файловом менеджере Thunar

Эта команда создает что-то похожее на новую папку. На самом деле это символическая ссылка, указывающая на папку, в которой вы ее создали. Вставьте эту символическую ссылку в любое другое место, и когда вы ее откроете, она всегда будет открывать исходную папку, в которой вы ее создали.

Как создавать символические ссылки в Linux

Знание того, как создать символическую ссылку с помощью команд Linux, — отличный способ улучшить свои знания в терминале Linux. В этом руководстве мы рассмотрим несколько команд для быстрого и простого изучения символических ссылок. Прежде чем мы начнем, давайте рассмотрим, что такое символические ссылки.

Что такое символические ссылки в Linux

Символические ссылки полезны не только для создания ярлыков и управления файлами в таких операционных системах, как Linux. Они также служат способом создания различных местоположений для основных пользовательских папок, например, «Документы», «Изображения», «Загрузки» и многого другого!

Символические ссылки действуют как строки, создающие пути для различных файлов, папок и каталогов в компьютерной системе. Они способны создавать и хранить несколько файлов в разных местах, ссылаясь на один файл. Таким образом, повышается эффективность за счет поиска всех конкретных документов одной командой.

Эти ссылки хранятся на мэйнфрейме, поэтому даже если исходный файл будет удален, у вас будет резервная копия большинства важных файлов. Символические ссылки помогают создавать недопустимые пути ссылок для хранения фрагментов информации в соответствии с требованиями пользователя.

Из-за удобных для пользователя функций Linux даже Microsoft использует его для создания символических ссылок. Символические ссылки, также известные как программные ссылки или символические ссылки, не уникальны для Linux, но они аналогичны параметру поиска в Windows, где можно искать определенный файл или каталог на диске, выполняя различные команды.

Как создавать символические ссылки в Linux?

Давайте посмотрим, как создавать ссылки на файлы и папки в Linux:

Создать символическую ссылку в Linux для файлов

Как правило, для создания ссылок используется команда ln и параметр -s для указания символических ссылок. Это самый простой способ обеспечить гибкий подход, позволяющий как можно больше экспериментировать с языком. В создании символических ссылок в Linux нет ничего сложного — вам просто нужно выполнить один простой шаг.

Команда ln в Linux создает ссылки между исходными файлами и каталогами.

  • -s — команда для символических ссылок.
  • [целевой файл] — имя существующего файла, для которого вы создаете ссылку
  • [Символическое имя файла] — имя символической ссылки.

Созданные ссылки можно проверить по списку каталогов с помощью команды подробного списка:

Однако, если вы не укажете [Символическое имя файла], команда автоматически создаст новую ссылку в существующем каталоге.

Создание символической ссылки в Linux для папок

Создание символических ссылок для папок также не представляет сложности. Команда, используемая для создания символической ссылки на папку:

Например, чтобы связать каталог /user/local/downloads/logo с папкой /devisers, используйте следующую команду:

После того как символическая ссылка будет создана и прикреплена к папке /devisers, она приведет к /user/local/downloads/logo. Когда пользователь меняет каталог – cd – на /devisers, система автоматически переходит к определенному файлу и записывает его в каталог команд.

Параметры символической ссылки называются переключателями командной строки. Вот наиболее распространенные из них и их описания:

< td>создать резервную копию каждого существующего целевого файла

Как изменить или удалить символическую ссылку в Linux?

Вы можете удалить существующие ссылки, прикрепленные к файлам или каталогам, с помощью команды unlink или rm. Вот как вы можете сделать это с помощью команды unlink:

Удаление символической ссылки с помощью команды rm аналогично команде unlink, описанной ниже:

Заключение

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

Linux — это замечательная платформа для создания интерактивных и динамичных приложений, где вы можете экспериментировать и вносить новшества. Прочный фундамент имеет решающее значение. Тщательно изучите основы языка, чтобы использовать его в полной мере. Мы надеемся, что это руководство помогло вам улучшить свои навыки с помощью другого полезного инструмента!

Узнайте больше о командах Linux для управления файлами

Эдвард – редактор контента с многолетним опытом работы в сфере ИТ в качестве писателя, маркетолога и энтузиаста Linux. Цель Эдварда — побудить читателей создать впечатляющее присутствие в Интернете. Еще он очень любит собак, гитары и все, что связано с космосом.

Читайте также:

Командный переключательОписание
–backup[=CONTROL]
-d, -F, –directoryсуперпользователю разрешено пытаться создать жесткую ссылку
-f, --forceсуществующий целевой файл удаляется
-I, --interactive запрашивать перед удалением файлов назначения
-L, --logicalобъекты уважения, являющиеся символическими ссылками
-n, --неразыменовываниесимволические ссылки на каталог рассматриваются как файлы
-P, --физическиеделать жесткие ссылки непосредственно на символические ссылки
-r, –relativeсоздавать символические ссылки относительно местоположения ссылки
-s, –symbolсоздавать символические ссылки вместо жестких ссылок
-S, –suffix=SUFFIX переопределить обычный суффикс резервного копирования
-v, --verboseпечатать имя каждого связанного файла