- How to: Linux / UNIX create soft link with ln command
- Two types of links
- How do I create soft link / symbolic link under Unix and Linux?
- How to use the ln command
- Creating Symlink to a directory
- How to overwrite symlinks/Soft link
- How to delete or remove symlinks/soft links
- Getting help about the ln command
- Conclusion
- What is Symbolic Links in Linux? How to Create Symbolic Links?
- What is Symbolic link in Linux and why is it used?
- How to create a symbolic link in Linux
- Things to keep in mind about symbolic links
- Changes made to link are reflected in the original file
- Does it link to a file or a directory? You may not know!
- You can create links to non-existent file or directory
- The symbolic links are created with 777 permission but it means nothing
- You can link to a link of a link aka chained symbolic link
- Symlink Tutorial in Linux – How to Create and Remove a Symbolic Link
- Difference Between a Soft Link and a Hard Link
- How to Create a Symlink
- How to Create a Symlink for a File – Example Command
- How to Create a Symlink for a Folder – Example Command
- How to remove a symlink
- How to Use Unlink to Remove a Symlink
- How to use rm to Remove a Symlink
- How to Find and Delete Broken Links
- Wrapping up
How to: Linux / UNIX create soft link with ln command
Symbolic links can be made to directories as well as to files on different filesystems or different partitions.
Two types of links
- symbolic links (also known as “soft links” or “symlinks”): Refer to a symbolic path indicating the abstract location of another file.
- hard links : Refer to the specific location of physical data.
How do I create soft link / symbolic link under Unix and Linux?
Soft links are created with the ln command. For example, the following would create a soft link named link1 to a file named file1, both in the current directory
$ ln -s file1 link1
To verify new soft link run:
$ ls -l file1 link1
Sample outputs:
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
From the above outputs it is clear that a symbolic link named ‘link1’ contains the name of the file named ‘file1’ to which it is linked.
How to use the ln command
So the syntax is as follows to create a symbolic link in Unix or Linux, at the shell prompt:
$ ln -s < source-filename >< symbolic-filename >
For example create a softlink for /webroot/home/httpd/test.com/index.php as /home/vivek/index.php, enter the following command:
$ ln -s /webroot/home/httpd/test.com/index.php /home/vivek/index.php
$ ls -l
Sample outputs:
You can now edit the soft link named /home/vivek/index.php and /webroot/home/httpd/test.com/index.php will get updated:
$ vi /home/vivek/index.php
Your actual file /webroot/home/httpd/test.com/index.php remains on disk even if you deleted the soft link /home/vivek/index.php using the rm command:
$ rm /home/vivek/index.php ## ##
## But original/actual file remains as it is ##
$ ls -l /webroot/home/httpd/test.com/index.php
Creating Symlink to a directory
The syntax remains same:
$ ln -s
For example, create a symbolic link from the /home/lighttpd/http/users/vivek/php/app/ directory to the /app/ directory you would run:
$ ln -s /home/lighttpd/http/users/vivek/php/app/ /app/
Now I can edit files using /app/
$ cd /app/
$ ls -l
$ vi config.php
How to overwrite symlinks/Soft link
Pass the -f to the ln command to overwrite links:
ln -f -s /path/to/my-cool-file.txt link.txt
How to delete or remove symlinks/soft links
Use the rm command to delete a file including symlinks:
rm my-link-name
unlink /app/
rm /home/vivek/index.php
Getting help about the ln command
Type the following ln command:
$ man ln
$ ln —help
ln command option | Description |
---|---|
—backup | make a backup of each existing destination file |
-b | like —backup but does not accept an argument |
-d | allow the superuser to attempt to hard link directories (note: will probably fail due to system restrictions, even for the superuser) |
-f | remove existing destination files |
-i | prompt whether to remove destinations |
-L | dereference TARGETs that are symbolic links |
-n | treat LINK_NAME as a normal file if it is a symbolic link to a directory |
-P | make hard links directly to symbolic links |
-r | create symbolic links relative to link location |
-s | make symbolic links instead of hard links |
-S | override the usual backup suffix |
-t | specify the DIRECTORY in which to create the links |
-T | treat LINK_NAME as a normal file always |
-v | print name of each linked file |
—help | display this help and exit |
—version | output version information and exit |
Conclusion
You learned how to create a symbolic link in Linux using the ln command by passing the -s option. See ln command man page here for more information.
🐧 Get the latest tutorials on Linux, Open Source & DevOps via
Источник
What is Symbolic Links in Linux? How to Create Symbolic Links?
What is Symbolic link in Linux and why is it used?
A symbolic link, also known as a symlink or a soft link, is a special type of file that simply points to another file or directory just like shortcuts in Windows. Creating symbolic link is like creating alias to an actual file.
If you try to access the symbolic link, you actually access the target file to which the symlink points to. Changes performed on the content of the link file changes the content of the actual target file.
If you use the ls command with option -l, this is what a symbolic link looks like:
In most Linux distributions, the links are displayed in a different color than the rest of the entries so that you can distinguish the links from the regular files and directories.
Soft Link displayed in different color
Symbolic links offer a convenient way to organize and share files. They provide quick access to long and confusing directory paths. They are heavily used in linking libraries in Linux.
Now that you know a little about the symbolic links, let’s see how to create them.
How to create a symbolic link in Linux
To create a symbolic link to target file from link name, you can use the ln command with -s option like this:
The -s option is important here. It determines that the link is soft link. If you don’t use it, it will create a hard link. I’ll explain the difference between soft links and hard links in a different article.
Things to keep in mind about symbolic links
Symbolic links could be confusing at times therefore you should keep note of a few things.
Changes made to link are reflected in the original file
That’s the whole purpose of the links after all. You access the target file by accessing the link. You can make changes to the target file through the links. Let’s see with example.
I have a file prog.py in newdir/test_dir. It has the following attributes:
Now, I’ll create a soft link to this file in my present directory:
Here are the attributes of the newly created link:
Notice the l (it’s L, not one) at the beginning of the line? If you are familiar with the file permissions in Linux, you would know that the ‘l’ signifies link and thus it tells you that this file is actually a link. To refresh your memory, – means file, and d means directory.
Now if I use this link to change the content or the attributes, the same will be reflected in the target file. For example, I am using touch command on the soft link and you’ll notice that it changes the timestamp of the target file.
Does it link to a file or a directory? You may not know!
How would you know if the link points to file or a directory? You cannot know that until you follow the path and access the target file itself.
You can create links to non-existent file or directory
Yes, that’s totally possible. This is why you should be careful while creating soft links in Linux. The target file to which you are linking doesn’t need to exist. You won’t get any error or warning for creating link to a file/directory that does not exist.
You’ll get error only when you try to access the target file, either through the link or on its own. The ls command will still work though.
The symbolic links are created with 777 permission but it means nothing
Did you notice the file permission on the symbolic link? The symlinks are always created with 777 permission (rwxrwxrwx). For regular file, this would mean that anyone can access the file. But that’s not the case for the links.
If the file permissions on the links were treated as it is, any user could create a symlink to a secure file and access it freely. That would be a major security issue. Thankfully, that doesn’t happen. Because the permission on the target files matter, not the permission on links.
You may use the chmod command to change the permission on the link but it will change the permission of the linked file, not the link itself.
You can link to a link of a link aka chained symbolic link
You can make a symbolic link that points to another link and so on. This is called chained symbolic link. It’s better to avoid them as it creates more confusion.
Well, that’s it. I presume you have a better knowledge of the soft links now and you know how to create symbolic links in Linux. You may read about the symlinks command that can help you find broken symlinks in Linux and manage them easily.
If you have questions or suggestions, please leave a comment below.
Источник
Symlink Tutorial in Linux – How to Create and Remove a Symbolic Link
A symlink (also called a symbolic link) is a type of file in Linux that points to another file or a folder on your computer. Symlinks are similar to shortcuts in Windows.
Some people call symlinks «soft links» – a type of link in Linux/UNIX systems – as opposed to «hard links.»
Difference Between a Soft Link and a Hard Link
Soft links are similar to shortcuts, and can point to another file or directory in any file system.
Hard links are also shortcuts for files and folders, but a hard link cannot be created for a folder or file in a different file system.
Let’s look at the steps involved in creating and removing a symlink. We’ll also see what broken links are, and how to delete them.
How to Create a Symlink
The syntax for creating a symlink is:
ln is the link command. The -s flag specifies that the link should be soft. -s can also be entered as -symbolic .
By default, ln command creates hard links. The next argument is path to the file (or folder) that you want to link. (That is, the file or folder you want to create a shortcut for.)
And the last argument is the path to link itself (the shortcut).
How to Create a Symlink for a File – Example Command
After running this command, you will be able to access the /home/james/transactions.txt with trans.txt . Any modification to trans.txt will also be reflected in the original file.
Note that this command above would create the link file trans.txt in your current directory. You can as well create a linked file in a folder link this:
There must be a directory already called «my-stuffs» in your current directory – if not the command will throw an error.
How to Create a Symlink for a Folder – Example Command
Similar to above, we’d use:
This would create a symlinked folder called ‘james’ which would contain the contents of /home/james . Any changes to this linked folder will also affect the original folder.
How to remove a symlink
Before you’d want to remove a symlink, you may want to confirm that a file or folder is a symlink, so that you do not tamper with your files.
One way to do this is:
Running this command on your terminal will display the properties of the file. In the result, if the first character is a small letter L (‘l’), it means the file/folder is a symlink.
You’d also see an arrow (->) at the end indicating the file/folder the simlink is pointing to.
There are two methods to remove a symlink:
How to Use Unlink to Remove a Symlink
This deletes the symlink if the process is successful.
Even if the symlink is in the form of a folder, do not append ‘/’, because Linux will assume it’s a directory and unlink can’t delete directories.
How to use rm to Remove a Symlink
As we’ve seen, a symlink is just another file or folder pointing to an original file or folder. To remove that relationship, you can remove the linked file.
Hence, the syntax is:
Note that trying to do rm james/ would result an error, because Linux will assume ‘james/’ is a directory, which would require other options like r and f . But that’s not what we want. A symlink may be a folder, but we are only concerned with the name.
The main benefit of rm over unlink is that you can remove multiple symlinks at once, like you can with files.
How to Find and Delete Broken Links
Broken links occur when the file or folder that a symlink points to changes path or is deleted.
For example, if ‘transactions.txt’ moves from /home/james to /home/james/personal , the ‘trans.txt’ link becomes broken. Every attempt to access to the file will result in a ‘No such file or directory’ error. This is because the link has no contents of its own.
When you discover broken links, you can easily delete the file. An easy way to find broken symlinks is:
This will list all broken symlinks in the james directory – from files to directories to sub-directories.
Passing the -delete option will delete them like so:
Wrapping up
Symbolic link are an interesting feature of Linux and UNIX systems.
You can create easily accessible symlinks to refer to a file or folder that would otherwise not be convenient to access. With some practice, you will understand how these work on an intuitive level, and they will make you much more efficient at managing file systems.
Frontend Web Engineer and Technical Writer. I love teaching what I know. Javascript / ReactJS / NodeJS
If you read this far, tweet to the author to show them you care. Tweet a thanks
Learn to code for free. freeCodeCamp’s open source curriculum has helped more than 40,000 people get jobs as developers. Get started
freeCodeCamp is a donor-supported tax-exempt 501(c)(3) nonprofit organization (United States Federal Tax Identification Number: 82-0779546)
Our mission: to help people learn to code for free. We accomplish this by creating thousands of videos, articles, and interactive coding lessons — all freely available to the public. We also have thousands of freeCodeCamp study groups around the world.
Donations to freeCodeCamp go toward our education initiatives and help pay for servers, services, and staff.
Источник