Skip to content

How to create a Symbolic Link on Linux / Mac

A symbolic link – or often just sym-link – is a pointer or shortcut to where the actual file lives on a filesystem. What does it take to create a symbolic link?

The ln command actually describes it pretty well:

“Make links between files”

The manual

Why would I need a Symbolic Link?

When should you create a symbolic link is a question I am often asked.

While creating a symbolic link can be really useful, it’s not often understood when or why we even do this.

Put simply, say you have a directory on a shared volume but need to refer to it as a local directory. Perhaps you need to store your ~/.ssh/ directory on a shared volume during a CI/CD build for example.

What is the syntax?

ln -s source_file destination_file
Code language: Bash (bash)

In our example from before, we could get the job done by using the following:

ls -s /mnt/volume_name/.ssh_shared ~/.ssh
Code language: Bash (bash)

This would make the /mnt/volume_name/.ssh_shared directory available at our user’s .ssh directory.

What the manual says about syntax:

usage: ln [-Ffhinsv] source_file [target_file] ln [-Ffhinsv] source_file ... target_dir link source_file target_file
Code language: Bash (bash)

Bonus content

Symlinks are a fantastic solution if you need to have duplicate files or folders on a machine for any reason whatsoever. Using symlinks allows you to change one of the instances and have all the referenced files update automatically.

This is because there is really only one true source.

With our example from this tutorial, if we list the file with the l flag, it shows us that the file in our directory actually refers to its original source of /etc/apache2/users.

See also  How to Download using Aria2c with Multiple Connections
$ ls -l ~/src/apache_project/users lrwxr-xr-x 1 ao ... ~/src/apache_project/users -> /etc/apache2/users
Code language: Bash (bash)

As we see above, it’s easy to tell if you have any symbolic links lying around.

Notify of
Inline Feedbacks
View all comments
Would love your thoughts, please comment.x