What command is used to create a symbolic link/soft link?
7 Answers
┌── ln(1) link, ln -- make links
│ ┌── Create a symbolic link.
│ │ ┌── the optional path to the intended symlink
│ │ │ if omitted, symlink is in . named as destination
│ │ │ can use . or ~ or other relative paths
│ │ ┌─────┴────────┐
ln -s /path/to/original /path/to/symlink
└───────┬───────┘
└── the path to the original file/folder
can use . or ~ or other relative paths
$ echo content > original
$ ln -s original symlink
$ ls -la original symlink
-rw-r--r-- 1 grgarside staff 8 28 Jan 18:44 original
lrwxr-xr-x 1 grgarside staff 8 28 Jan 18:44 symlink -> original
$ cat symlink
content
For more information about ln(1) see the man page.
The path to the symlink is optional; if omitted, ln
defaults to making a link with the same name as the destination, in the current directory:
$ cd ~/Documents
$ ln -s ../Pictures
$ ls -l Pictures
lrwxr-xr-x 1 user staff 11 Feb 1 17:05 Pictures -> ../Pictures
To create a symlink to replace a system directory (e.g. if you want to have /Users
pointing to another disk drive), you need to disable System Integrity Protection. You can re-enable it after the symlink is set up.

- 201,078
-
91If only man pages were as clear as your answer! – Adrian Lynch Jan 27 '16 at 07:00
-
If only man page writers had thought to use the term "original"! Just like everything in life, the original always comes first. – jschmitter Oct 16 '23 at 19:22
The command is called ln
. If used with the option -s
it will create a symbolic link in the current directory:
ln -s /any/file/on/the/disk linked-file
If you want to overwrite an already existing target (linked-file
), use
ln -Fs /any/file/on/the/disk linked-file

- 100,768
I know this question is explicitly asking about the Terminal, but if you're in GUI Land and don't want to enter Terminal Land, you can use SymbolicLinker. This puts a "Make Symbolic Link" option in your Services menu in Finder.

- 100,768

- 1,831
-
4I'd love to know why this was downvoted so I can make higher-quality answers from now on :) – Ky - Apr 27 '16 at 22:43
-
16probably because the question was "How can I create a symbolic link in Terminal?" But I am not downvoting you :) – vedrano Apr 29 '16 at 14:55
-
2@EdwardFalk I think in El Capitan, you can hold
Command
+Option
while dragging a file... will update the answer later – Ky - Nov 09 '16 at 14:27 -
5
-
3@BenLeggerio, The difference is explained here: http://apple.stackexchange.com/questions/2991/whats-the-difference-between-alias-and-link – MiB Feb 25 '17 at 03:25
ln -s /some/dir/ ~/Desktop/dir
You can also create a symlink for directory using the same command
ln -s "$(pwd)" ~/Desktop/dir
To create symlink to current directory you are in.

- 201
-
4
-
-
@mylogon i just realised that
.
doesnt work on macOS. didnt try on linux yet. using./
resulted in thisfoo -> ./foo
which points to itself. – Gerald Jul 12 '18 at 06:10 -
Unless the source path is relative to your destination, use an absolute path to your source path, and put it in single quotes
$ ln -s '/any file/could have (special chars)/or spaces/test' '/some/other place/file'
You can always figure out the current full unescaped path to something by going to that folder in the terminal, then typing
$ pwd

- 2,393
As a heads up to anyone, you must use full path names. This wasn't immediately clear to me, as I felt I could symlink relative paths in a folder that I was running the command inside. I could be wrong (I'm a macOS novice).
For example, if I try to symlink my Pictures folder inside of my Downloads folder, while cd'd in my user home directory, this will not work:
Users\stevebauman >_ ln -s Pictures Downloads
Instead, you must use:
Users\stevebauman >_ ln -s /Users/stevebauman/Pictures /Users/stevebauman/Downloads

- 109
-
2Not exactly - the link has to be expanded from where it is so ln -s ../Pictures Pictures works. The link works as if you cd to where you store the link – mmmmmm Feb 01 '21 at 12:14