为提高工作效率,我们经常会写一些自动化脚本,也会使用些效率工具,比如 Alfred,两者相结合,借助 Alfred 来快速执行些脚本,但有些脚本需要以管理员身份执行,那么如何在 Alfred 中以管理员身份来执行脚本呢?

需要借助于 AppleScript,在 Alfred 的 workflow action 中选择 Run NSAppleScript,不过这样会在 Alfred 的主线程中执行,要在后台执行可以选择 Run Script action, 并在 Language 中选中 /usr/bin/osascript (AS) ,脚本内容为 do shell script "脚本路径" with administrator privileges,这样就可以在后台以管理员身份执行脚本了。如下图

e.g.

另,上图中的脚本为自动切换正式版和 beta 版 Xcode:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash

# switch between release and beta xcodes
function xcswitch() {
RELEASE="Xcode.app"
BETA="Xcode-beta.app"

CURRENT=$(xcode-select -p)
NEXT=""

if [[ "$CURRENT" =~ "$RELEASE" ]]
then
NEXT="$BETA"
else
NEXT="$RELEASE"
fi

sudo xcode-select -s "/Applications/$NEXT"
echo "Switched to $NEXT"
}

xcswitch