我有一个自定义vim设置,运行在终端内部的几个选项卡中运行的分割(GNU)屏幕会话中。当然,我希望自动完成所有这些。所以我搜索了很多,大多数答案谈到使用osascript -e
来运行一堆AppleScript命令。我的情况略有不同:首先我使用TotalTerminal,一个终端的插件(不认为它很重要,但提到它以防万一)和我写一个hashbang脚本而不是bash脚本,即。
#!/usr/bin/osascript
tell application "System Events" to tell process "Terminal" to keystroke "t" using command down
tell application "Terminal" to activate
tell application "Terminal" to do script with command "cd ~/Desktop/Projects && screen -d -U -R -A"
我从命令行运行。选项卡打开但脚本/命令在新窗口中运行,而不是在新创建的选项卡内运行。
答案 0 :(得分:1)
这就是我建议设置的方法:
#!/usr/bin/osascript
tell application "System Events"
tell process "Terminal"
set frontmost to true
end tell
end tell
tell application "Terminal"
activate
tell application "System Events" to keystroke "t" using command down
do script "cd ~/Desktop/Projects && screen -d -U -R -A" in window frontmost
do script "clear; echo 'Hello, World!'" in tab 1 of window frontmost
end tell
注意:您还可以使用tab x
选择希望下一个命令进入的选项卡。如果切换回第一个选项卡,则应在创建新选项卡后注意发送给它的回显。
上面的例子可能是一些代码行,尽管它应该按顺序正确地获取所有进程。我认为关键因素是将终端设置为最前面的,这将使当前的终端窗口开始与脚本的其余部分进行交互。
编辑:OP回来后需要进行一些更改,这是最终结果:
#!/usr/bin/osascript
tell application "System Events"
tell process "Terminal"
set frontmost to true
end tell
end tell
tell application "Terminal"
activate
do script "mosh user@someserver" in window frontmost
tell application "System Events" to keystroke "t" using command down
do script "cd ~/Desktop/Projects && screen -d -U -R -A" in tab 2 of window frontmost
end tell