使用~/.bash_profile中的别名自动执行Mac应用程序中的日常任务



我知道您可以在~/.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'
}

最新更新