我知道您可以在~/.bash_profile
中创建别名,以自动化bash命令,如:
alias fly="ssh username@ip_address -p22"
但我想知道是否有可能在Mac上的应用程序中实现任务自动化。例如,我知道您可以创建一个别名来打开系统首选项:
alias sys="open /Applications/System Preferences.app/"
但是,如何在系统首选项应用程序中自动导航呢?例如,我发现自己打开了"系统首选项",键入"网络",然后频繁按enter键导航到"网络"设置。
有没有一种方法可以使用别名自动执行这一系列步骤?或者别名仅限于bash命令?
Shell别名仅限于Shell命令。但是,许多OSX应用程序可以由AppleScript命令控制,并且这些应用程序可以通过shell命令osascript
发出。不过,引用有点棘手,因为AppleScript命令通常包含引号,然后需要将其封装在shell命令中的另一层引号中,然后在定义别名时需要将其包装在另一层引号中。
有关使用AppleScript的说明,请参阅macosxautomation.com(特别是本页的系统首选项)。要使系统首选项显示网络窗格,您可以使用以下AppleScript:
tell application "System Preferences"
reveal pane id "com.apple.preference.network"
activate
end tell
它可以用这个osascript
命令发出(注意,脚本的每一行都对应于一个-e
参数,AppleScript的双引号被包裹在shell的单引号中):
osascript -e 'tell application "System Preferences"' -e 'reveal pane id "com.apple.preference.network"' -e 'activate' -e 'end tell'
你可以为此创建一个别名:
alias networkprefs="osascript -e 'tell application "System Preferences"' -e 'reveal pane id "com.apple.preference.network"' -e 'activate' -e 'end tell'"
请注意,我必须转义用于AppleScript消费的双引号。。。相当令人困惑。我会使用shell函数(类似于别名,但没有奇怪的引用):
networkprefs() {
osascript -e 'tell application "System Preferences"' -e 'reveal pane id "com.apple.preference.network"' -e 'activate' -e 'end tell'
}