我知道您可以在~/.bash_profile
中创建自动执行bash命令的别名,如:
alias fly="ssh username@ip_address -p22"
但我想知道是否有可能在Mac上的应用程序中自动执行任务。因此,例如,我知道你可以创建一个别名来打开系统偏好设置:
alias sys="open /Applications/System\ Preferences.app/"
但是如何在“系统偏好设置”应用中自动导航?例如,我发现自己打开系统偏好设置,键入“网络”,然后频繁按Enter键导航到网络设置。
有没有办法用别名自动化这一系列步骤?或者别名是否仅限于bash命令?
答案 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'
}