How to Remove (Delete) Symbolic Links on Linux

Introduction

Before we begin talking about how to remove (Delete) symbolic Links on Linux, let's briefly understand – What is symbolic link ?

A symbolic link, also known as a symlink or soft link, is a special type of file on Linux that acts as a shortcut or reference to another file or directory. It allows you to create a link to a target file or folder, making it appear as if the symlink is the actual file or folder. Symbolic links are useful for organizing files, simplifying access, and saving disk space.

Using the rm, unlink, and locate commands, we'll teach you how to remove (delete) symbolic links in Linux/UNIX systems.

In this tutorial, you will remove (Delete) symbolic Links on Linux. We will also address a few FAQs on how to remove (Delete) symbolic Links on Linux.

  1. Efficient file organization: Symbolic links help organize files by creating logical connections between them.
  2. Simplified access: They provide convenient and easy access to files or directories located in different locations.
  3. Space-saving: Symbolic links occupy minimal disk space as they only store the path to the target file, rather than duplicating it.
  4. Dynamic updates: They allow for seamless updates by automatically reflecting changes made to the target file or directory.
  5. Cross-filesystem linking: Symbolic links enable linking files across different filesystems, providing flexibility in file management.

Prerequisites

You must have write permissions on the directory that contains the symlink in order to remove it. Otherwise, you'll get an error message that says "Operation not permitted."

The file that symlink references remain unaffected when it is removed.

The ls -l command can be used to determine whether a file is a symbolic link and to locate the file or directory to which the symbolic link points.

ls -l /usr/bin/python
Output

lrwxrwxrwx 1 root root 11 Apr 16  2022 /usr/bin/python -> python2.7

The letter "l" in the first character indicates that the file is a symlink. The "->" symbol denotes the file to which the symlink refers.

The rm command deletes the files and folders specified.

Invoke the rm command with the symbolic link name as an argument to delete a symlink:

rm symlink_name

The command terminates with a zero and produces no output if it succeeds.

You can use rm to erase multiple symbolic links at once. To do so, supply the symlinks' names as arguments, separated by a space:

rm symlink1 symlink2

Use the -i option to be prompted before deleting the symlink:

rm -i symlink_name

Type y and press Enter to confirm.

Output

rm: remove symbolic link 'symlink_name'? 

Do not attach the / trailing slash to the end of a symbolic link pointing to a directory. Otherwise, you will receive the following error:

rm symlink_to_dir/
Output

rm: cannot remove 'symlink_to_dir/': Is a directory

If the argument's name ends in /, the rm command considers the file to be a directory. The issue occurs because rm cannot delete directories when used without the -d or -r options.

When eliminating symbolic links with rm, always use the -r option to be safe. For instance, if you type in:

rm -f symlink_to_dir/

The target directory's contents will be removed.

The unlink command removes a link between two files. unlink, unlike rm, only takes one parameter.

Run the unlink command with the symlink name as an argument to erase a symbolic link:

unlink symlink_name

If the command is successful, no output is displayed.

Because unlink cannot remove directories, do not append the / trailing slash to the end of the symlink name.

The symbolic file will be left dangling if you delete or relocate the source file to a different location (broken).

Run the following command to detect all broken symbolic links in a particular directory:

find /path/to/directory -xtype l
Output

/path/to/directory/symlink1
/path/to/directory/subdir/symlink2

All broken links in the directory and its subdirectories will be listed by this command.

If you want to find symlinks in subdirectories but not in the main directory, use the -maxdepth 1 option.

find /path/to/directory -maxdepth 1 -xtype l
Output

/path/to/directory/symlink1

Once you've located the broken symlinks, you may either manually remove them using rm or unlink, or use the find command's -delete option:

find /path/to/directory -xtype l -delete

Will deleting a symbolic link also delete the target file?

No, removing a symbolic link will not delete the target file or directory. It only removes the link itself.

Can I delete a symbolic link using the graphical file manager?

Yes, most graphical file managers provide an option to delete symbolic links. Right-click on the link and choose the appropriate option.

What happens if I accidentally delete the target file instead of the symbolic link?

Deleting the target file will not affect the symbolic link. However, the link will point to a non-existent file, rendering it broken.

How can I confirm if a file is a symbolic link?

Use the ls command with the -l option. Symbolic links will display an "l" in the file's permission section and point to their target.

Is there a way to remove symbolic links without confirmation prompts?

Yes, use the rm command with the -f option to force removal without any confirmation prompts. Exercise caution with this option.

Can I recover a deleted symbolic link?

No, once a symbolic link is deleted, it cannot be easily recovered. It is recommended to have backups of important symbolic links to avoid loss.

Are there any risks associated with deleting a symbolic link? 

No, deleting a symbolic link will not affect the actual target file or directory. It only removes the link itself.

Conclusion

Use the rm or unlink commands with the name of the symbolic link as an argument to remove a symbolic link. Do not apply a trailing slash to the symlink name when removing a symbolic link that points to a directory.

If you have any queries, please leave a comment below and we’ll be happy to respond to them.