我正在编写一个Applescript,让我的终端可以为我制作Firefox附加组件。
tell application "Terminal"
do script "cd Public/addon-sdk-1.0"
do script "source bin/activate"
do script "clear"
end tell
当我运行此脚本时,我的自定义终端会打开常规终端窗口;并且bash脚本在常规窗口中运行。所以,我试图找出如何让Applescript只打开我的自定义终端,并在其中执行bash脚本。
答案 0 :(得分:1)
您的问题的答案是不使用do script
,而是使用keystroke
或key code
向当前终端窗口发送击键。这是我用来做类似事情的脚本。我只是从终端用osascript myscript.scpt
调用它或直接启动它(我使用LaunchBar来调用applescripts)并打开一个新的终端选项卡(如果终端已经打开),给它一个自定义名称然后运行我提供的任何命令。您可以修改此选项以跳过创建新选项卡,然后只在当前终端窗口中运行。我只需要使用这种方法,而不仅仅是运行一些标准的终端命令(例如将密钥发送到交互式python会话),否则我只是创建一个bash脚本。
global ENTER_, ESC_
set ENTER_ to 52
set ESC_ to 53
on run_commands(commands, pause)
tell application "System Events"
repeat with cmd in commands
keystroke cmd
key code ENTER_
delay pause
end repeat
end tell
end run_commands
on new_terminal_tab(tab_name)
activate application "Terminal"
delay 0.5
tell application "System Events"
# create new tab
keystroke "t" using {command down}
delay 0.5
# give it a name
keystroke "I" using {shift down, command down}
keystroke tab_name
delay 0.5
key code ESC_ # escape
end tell
end new_terminal_tab
new_terminal_tab("addon-sdk-work")
run_commands( { "cd /Users/username/Documents/dev/projname",¬
". env/bin/activate", ¬
"clear"}, 0.5)