Quick way to create a symlink?
macOS does not have a native drag and drop method to create a symlink in the same manner as creating an alias in Finder. By default, symlinks are created by using ln
from the command line in Terminal.
In Terminal:
$ ln
usage: ln [-Ffhinsv] source_file [target_file]
ln [-Ffhinsv] source_file ... target_dir
link source_file target_file
$
For additional details, use: man ln
For a homegrown solution using Automator and AppleScript, the following is a bare-bones example of an Automator Service (QuickAction in macOS Mojave) that when assigned a keyboard shortcut, e.g. ⌘S in System Preferences > Keyboard > Shortcuts > Services, will create a symlink of the selected items in Finder at the selected destination folder that is brought up by pressing e.g. ⌘S:
This Service (QuickAction) will be available on the Services menu in Finder or from right-click Context menu, and or the assigned keyboard shortcut once an item or items are selected in Finder.
Bare-bones example AppleScript code:
on run {input, parameters}
if input is equal to {} then return
activate
set posixPath to POSIX path of (choose folder with prompt ¬
"Select destination folder for Symlink..." default location ¬
(path to desktop folder) with invisibles)
repeat with thisItem in input
set thisItem to POSIX path of (thisItem as alias)
try
do shell script "ln -s " & quoted form of thisItem & ¬
space & quoted form of posixPath
end try
end repeat
end run
The example AppleScript code assumes you have write privileges at the selected destination folder, other then the selected items source folder, and as coded only creates the symlink if it doesn't already exist. Changes can be made to the code to accommodate other options.
Note: The example AppleScript code is just that and, other then a single try
statement, does not contain any additional error handling as may be appropriate. The onus is upon the user to add any error handling as may be appropriate, needed or wanted. Have a look at the try statement and error statement in the AppleScript Language Guide. See also, Working with Errors.
The service SymbolicLinker will do what you need.