使用〜/ .bash_profile中的别名自动化Mac应用程序中的日常任务

时间:2014-09-18 03:29:36

标签: macos terminal workflow alias .bash-profile

我知道您可以在~/.bash_profile中创建自动执行bash命令的别名,如:

alias fly="ssh username@ip_address -p22"

但我想知道是否有可能在Mac上的应用程序中自动执行任务。因此,例如,我知道你可以创建一个别名来打开系统偏好设置:

alias sys="open /Applications/System\ Preferences.app/"

但是如何在“系统偏好设置”应用中自动导航?例如,我发现自己打开系统偏好设置,键入“网络”,然后频繁按Enter键导航到网络设置。

有没有办法用别名自动化这一系列步骤?或者别名是否仅限于bash命令?

1 个答案:

答案 0 :(得分:3)

Shell别名仅限于shell命令。但是许多OS X应用程序可以通过AppleScript命令控制,并且可以使用shell命令osascript发出这些命令。但是,引用有点棘手,因为您的AppleScript命令通常包含引号,然后需要将它们包装在shell命令中的另一层引号中,然后需要将其包含在另一个引号层中在定义别名时。

有关使用AppleScript的说明,请参阅macosxautomation.com(特别是系统偏好设置的this page)。要使“系统偏好设置”显示“网络”窗格,您可以使用此AppleScript:

tell application "System Preferences"
    reveal pane id "com.apple.preference.network"
    activate
end tell

...可以使用此osascript命令发出(注意脚本的每一行对应一个-e参数,AppleScript双引号用单引号括起来壳):

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'
}