What command is used to create a symbolic link/soft link?
┌── 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.
-
63
-
permission denied :S can you give me a hint? trying to create symlink for Users so I can use it on other hard disk and ssd has just symlink. thanks – Ewoks Mar 13 '16 at 21:36
-
2
-
4Fun fact: original doesn't need to actually exist. The command
ln -s "This directory is no longer in use" README
would be perfectly legitimate, and then anybody executingls -l
would see the message. – Edward Falk May 11 '16 at 14:33 -
1For future reference: You don't need to move /Users on macOS to save space. You can change users' home directory paths individually in the System Preferences under Users & Groups by right-clicking the user list entries. – Peter W. May 12 '17 at 22:09
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
-
1Does the linked-file have to exist first? I get a file not found error on the target. – AlxVallejo Oct 26 '16 at 14:26
-
2The file not (you get an error message if it does), but all directories in any path. If you are stuck, feel free to ask a new question using the Ask Question button at the top right. Include a link to this question to provide context. – nohillside♦ Oct 26 '16 at 17:06
-
Symbolic link should not exist before you run this command. But a valid path is required as far as I know. If the output file's folder not exists before you run this command, you will get
No such file or directory
error as well. – Deniz Kaplan Dec 19 '17 at 11:23
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.
-
3I'd love to know why this was downvoted so I can make higher-quality answers from now on :) – Ben Leggiero Apr 27 '16 at 22:43
-
11probably 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
-
1@EdwardFalk I think in El Capitan, you can hold
Command
+Option
while dragging a file... will update the answer later – Ben Leggiero Nov 9 '16 at 14:27 -
2
-
2@BenLeggerio, The difference is explained here: apple.stackexchange.com/questions/2991/… – MiB Feb 25 '17 at 3: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.
-
2
-
-
@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 6:10 -