如何发送Ctrl+;C到除AppleScript中当前选项卡以外的所有iTerm2选项卡?
在iTerm2中,我有一段代码,它向包括当前选项卡在内的所有选项卡发送特定命令。但是,有时候,一些选项卡被卡住了,我想在执行命令之前让它们进入shell提示符。但是,将Ctrl+C发送到当前选项卡将阻止脚本继续 我想将终止信号发送到所有其他选项卡,但不发送到当前选项卡如何发送Ctrl+;C到除AppleScript中当前选项卡以外的所有iTerm2选项卡?,applescript,iterm2,Applescript,Iterm2,在iTerm2中,我有一段代码,它向包括当前选项卡在内的所有选项卡发送特定命令。但是,有时候,一些选项卡被卡住了,我想在执行命令之前让它们进入shell提示符。但是,将Ctrl+C发送到当前选项卡将阻止脚本继续 我想将终止信号发送到所有其他选项卡,但不发送到当前选项卡 osascript \ -e 'tell application "iTerm"' \ -e " tell current window" \ -e ' repea
osascript \
-e 'tell application "iTerm"' \
-e " tell current window" \
-e ' repeat with aTab in tabs' \
-e ' tell aTab' \
-e ' repeat with asession in sessions' \
-e ' tell asession' \
-e ' tell application "System Events" to keystroke "c" using {control down}' \
-e ' end tell' \
-e ' end repeat' \
-e ' end tell' \
-e ' end repeat' \
-e ' end tell' \
-e 'end tell'
我试着用“如果aTab不等于当前选项卡”来调节“告诉aTab”,但仍然不起作用。下面的示例AppleScript代码在脚本编辑器下的macOS Catalina和iTerm2下进行了测试,构建了3.3.12,并在没有任何问题的情况下为我工作,当前窗口有多个选项卡,每个选项卡都有一个会话,并且除了执行时是当前选项卡的选项卡外,停止每个选项卡中正在运行的进程
告诉应用程序“iTerm”
激活
告诉当前窗口
将excludeTab设置为当前选项卡
选择选项卡1
在选项卡中使用aTab重复此操作
选择aTab
如果当前选项卡不等于excludeTab,则
告诉当前会话
将应用程序“系统事件”告知
使用{control down}的键代码8
结束语
如果结束
结束重复
选择excludeTab
结束语
结束语
注意事项: 我强烈建议在这样的脚本上使用
osascript-e命令
,而不是使用#创建一个可执行文件/usr/bin/osascript
shebang,然后将示例AppleScript代码按原样复制并粘贴到可执行文件中。如果在这样的脚本上使用osascript-e命令
,这个IMO就更容易根据需要进行维护和修改
注意:示例AppleScript代码就是这样的,任何包含的错误处理都不包含任何其他适当的错误处理。用户有责任根据需要添加任何适当的错误处理。请查看中的语句和语句。另见。此外,在适当的情况下,可能需要在事件之间使用该命令,例如延迟0.5,延迟值设置适当。使用
“系统事件”
tokeystroke/keycode
是UI脚本,它要求目标窗口和选项卡在执行每个keystroke/keycode
命令时具有焦点。我明白了,您对如何实现我尝试的目标有其他建议吗?