Đối với những người muốn có một giải pháp python, đây là một hàm gói applescript, sau đó gọi sub process.call:
def applescript_finder_alias(theFrom, theTo):
"""
(theFrom, theTo)
create a short/alias
theFrom, theTo: relative or abs path, both folder or both file
"""
# https://apple.stackexchange.com/questions/51709
applescript = '''
tell application "Finder"
make new alias to %(theType)s (posix file "%(theFrom)s") at (posix file "%(todir)s")
set name of result to "%(toname)s"
end tell
'''
def myesp(cmdString):
import os, inspect, tempfile, subprocess
caller = inspect.currentframe().f_back
cmd = cmdString % caller.f_locals
fd, path = tempfile.mkstemp(suffix='.applescript')
try:
with os.fdopen(fd, 'w') as tmp:
tmp.write(cmd.replace('"','\"').replace("'","\'")+'\n\n')
subprocess.call('osascript ' + path, shell=True, executable="/bin/bash")
finally:
os.remove(path)
return None
import os
theFrom = os.path.abspath(theFrom)
theTo = os.path.abspath(theTo)
if os.path.isfile(theFrom):
theType = 'file'
else:
theType = 'folder'
todir = os.path.dirname(theTo)
toname = os.path.basename(theTo)
myesp(applescript)
ln -s ~/Library/path/to/folder folder
. Một nhược điểm nhỏ của phương pháp này (tức là liên kết tượng trưng) là liên kết sẽ bị phá vỡ nếu "bản gốc" (tức là mục tiêu) bị di chuyển hoặc đổi tên.