- How to Create Linux Symlinks
- What is a Symlink?
- Soft Link Versus Hard Link
- Chains of Soft Links
- How to Create a Symbolic Link in Linux
- Creating a Symlink to a File
- Creating a Symlink to a Directory/Folder
- Force Overwriting of a Symbolic Link
- Display the Contents of a Symlink
- Using Linux Symlinks
- Removing Symlinks
- Finding Dangling Symlinks
- Conclusion
- More Information
- Команда Ln: как создавать символические ссылки в Linux
- Команда Ln для создания символических ссылок
- Создать символическую ссылку на каталог Linux
- Принудительно перезаписать символические ссылки
- Удаление ссылок
- Soft Links против Hard Links
- Символические ссылки (Soft Links)
- Жесткие ссылки (Hard Links)
How to Create Linux Symlinks
Estamos traduciendo nuestros guías y tutoriales al Español. Es posible que usted esté viendo una traducción generada automáticamente. Estamos trabajando con traductores profesionales para verificar las traducciones de nuestro sitio web. Este proyecto es un trabajo en curso.
A symbolic link, or symlink, creates a name that references another file, directory, or other Linux file system object. Using symlinks minimizes the necessity of having multiple copies of a file within a system. Any changes can be made in one place, instead of modifying many copies.
Symlinks also provide a way to manage access. Multiple directories each owned by a user can reference a subset of a set of files. This limits visibility in a more complex manner than the file system permissions system permits.
Symlinks are a vital tool to file management and organization.
What is a Symlink?
A symlink is a type of special file whose “data” is a path to the name of a file system object, which could be a:
- file
- directory
- pipe — via mkfifo
- special device
- symlink — see Chains of Soft Links below
Also known as a “soft link” in Linux, the term “shortcut” describes symlinks in other operating systems.
Soft Link Versus Hard Link
It is easy to confuse a symlink with a hard link. A disk’s file system has a number of control blocks called inodes. These describe the details of files and other objects, including where on the disk any associated data is stored. Entries in a Linux directory associate a name, for example “config”, with an inode number. A hard link creates an alias, or an associated name with the same inode number. See the man page for the ln utility for details, particularly limitations on creating and removing hard links.
The symlink (AKA soft link) is a referrer rather than an alias. Think of it as a signpost pointing to where the target file can be found. The Linux system reads the symlink’s file path to reach the target.
Soft links make restoring backups easier than doing so with hard links. Use of symlinks can simplify the installation or update of an application or file system tree.
Chains of Soft Links
Symlinks can be used in special cases where the symlink points to another symlink. The Linux system progresses down such a chain of symlinks to get to the final object. When you unlink the head of a symlink chain, you remove only that symlink. When you unlink an intermediate symlink, you break the chain. In both cases, the target remains untouched.
To prevent chain loops from overloading the system, Linux limits the number of hops through a symlink chain to 40.
To see all the nodes in a symlink chain, use the namei command. Here is sample output from one computer:
d . d Desktop d backup.per d satch d Desktop d ietf d rfcs l in-notes -> in-notes l in-notes -> in-notes l in-notes -> in-notes l in-notes -> in-notes …
The command follows from the specified directory down the file system tree. In this case, one of the symlinks points to itself – a chain loop that’s pretty direct.
How to Create a Symbolic Link in Linux
There are various ways to create symbolic links depending on how you want to use them. The basic syntax to create a symlink is as follows:
The -s switch is important because it tells the Linux ln command to create a soft link instead of a hard link. The is optional. If not specified, the symlink is created in the current working directory.
Creating a Symlink to a File
The following example command creates the symlink-file symlink in the current directory, which points to /tmp/reference-file :
In this example, the file pathname is absolute. You can create a symlink with a relative path. However, make sure that anything using the symlink first sets the current working directory, otherwise the link is broken.
Creating a Symlink to a Directory/Folder
The same command can also be used to create a symlink that points to a directory. The following example command creates the symlink-directory symlink in the current directory, which points to /tmp/reference-directory :
Any reference to symlink-directory acts on the directory /tmp/reference-directory . This includes adding or deleting files in the directory, changing the ownership, and changing the permission if allowed.
Force Overwriting of a Symbolic Link
If the path in a symlink is wrong, for example a typo, or the target has moved, you can update the link using the -f flag:
This results in the old symlink’s contents being replaced with the new. The -f switch automatically removes any conflicting symlink-filepath files or symlinks if there is a conflict. Making a symlink without the -f switch, using a sympath-name that is already in use, results in the command failing.
Display the Contents of a Symlink
To show the contents of a symlink, use the Linux ls command:
The output looks like this:
symlink-file -> /tmp/reference-file
Using Linux Symlinks
Almost all file-based actions on a symlink act on or affect the target file, but not the symlink or symlink chain itself. Therefore touch , chmod , chown , chgrp , shell redirection, and their program/script equivalents all act on the target file/directory and its attributes. When the file is open, all read and write activity accesses or modifies the target file. However, there are exceptions, described in the next section.
Removing Symlinks
The exceptions to the above-described rule are the Linux commands unlink , rm , rmdir , and their associated system calls. These commands either fail or remove the symlink itself instead of the target file or directory. These exceptions prevent the inadvertent removal of the target.
See more information about removing symlinks in our Remove Symbolic Links.
Finding Dangling Symlinks
A dangling symlink occurs when the target does not exist. The original file may have been deleted or moved to another part of the file system tree.
While breaking a symlink can be intentional, dangling symlinks can clutter up the file system if not intended. To find these dangling symlinks within a file system tree, use this command:
Do not immediately pipe this to the rm command. Investigate first, so you can repair inadvertently broken symlinks.
Conclusion
Symlinks help reduce clutter and maintenance when many applications use a common file. When a sysadmin changes the common file, it affects all applications using it, in one simple operation. Using symlinks is an alternative to using directories like /etc (which requires root access) to store such much-used files. Moreover, the application developer can use a local file for testing and debugging. Then upon release, replace that local file with the symlink to the production version of the application.
If a portion of the file system tree expands to overflow the disk partition, move that tree to another partition, perhaps on another disk. Then replace the top of that tree with a symlink pointing to its new home. This method of doing disk maintenance reduces the clutter in /etc/fstab by associating the new location to the old.
More Information
You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.
This page was originally published on Tuesday, April 18, 2023.
Команда Ln: как создавать символические ссылки в Linux
Символические ссылки используются в Linux для управления файлами и их сопоставления.
В этом руководстве вы узнаете, как использовать команду ln для создания символических ссылок в Linux.
Команда Ln для создания символических ссылок
Чтобы использовать команду ln, откройте окно терминала и введите команду в следующем формате:
- По умолчанию команда ln создает hard link (жесткая ссылка).
- Используйте параметр -s , чтобы создать символическую ссылку, она же soft link.
- Параметр -f заставит команду перезаписать уже существующий файл.
- Source — это файл или каталог, на который делается ссылка.
- Destination — это место для сохранения ссылки — если это поле не заполнено, символическая ссылка сохраняется в текущем рабочем каталоге.
Например, создайте символическую ссылку с помощью:
ln -s test_file.txt link_file.txt
Это создает символическую ссылку link file.text , которая указывает на testfile.txt .
Чтобы проверить, создана ли символическая ссылка, используйте команду ls :
Создать символическую ссылку на каталог Linux
Символическая ссылка может относиться к каталогу. Чтобы создать символическую ссылку на каталог в Linux:
ln -s /mnt/external_drive/stock_photos ~/stock_photos
В этом примере создается символическая ссылка с именем stock_photos в домашнем каталоге ~ / . Ссылка относится к каталогу stock_photos на внешнем диске external_drive .
Примечание. Если система подключена к другому компьютеру, например к корпоративной сети или удаленному серверу, символические ссылки могут быть связаны с ресурсами в этих удаленных системах.
Принудительно перезаписать символические ссылки
Вы можете получить сообщение об ошибке, как показано на изображении ниже:
Сообщение об ошибке означает, что в месте назначения уже есть файл с именем link_file.txt . Используйте параметр -f , чтобы система перезаписывала целевую ссылку:
ln -sf test_file.txt link_file.txt
Удаление ссылок
Если исходный файл будет перемещен, удален или станет недоступным (например, сервер отключится), ссылку нельзя будет использовать. Чтобы удалить символическую ссылку, используйте команду rm (remove) или unlink :
rm link_file.txt unlink link_file.txt
Soft Links против Hard Links
Команду ln можно использовать для создания двух разных типов ссылок:
Символические ссылки (Soft Links)
Символическая ссылка, иногда называемая мягкой ссылкой или soft link, указывает на расположение или путь к исходному файлу. Она работает как гиперссылка в Интернете.
Вот несколько важных аспектов символической ссылки:
- Если файл символьной ссылки удаляется, исходные данные остаются.
- Если исходный файл будет перемещен или удален, символическая ссылка работать не будет.
- Символическая ссылка может относиться к файлу в другой файловой системе.
- Символические ссылки часто используются для быстрого доступа к часто используемым файлам без ввода всего местоположения.
Жесткие ссылки (Hard Links)
Когда файл хранится на жестком диске, происходит несколько вещей:
- Данные физически записываются на диск.
- Создается справочный файл, называемый индексом, который указывает на расположение данных.
- Имя файла создается для ссылки на данные inode.
Жесткая ссылка работает путем создания другого имени файла, которое ссылается на данные inode исходного файла. На практике это похоже на создание копии файла.
Вот несколько важных аспектов жестких ссылок:
- Если исходный файл удален, к данным файла все равно можно будет получить доступ через другие жесткие ссылки.
- Если исходный файл перемещен, жесткие ссылки по-прежнему работают.
- Жесткая ссылка может относиться только к файлу в той же файловой системе.
- Если количество жестких ссылок равно нулю, индексный дескриптор и данные файла удаляются безвозвратно.