如何从命令行在iTerm窗口中执行命令



如何从命令行运行iTerm会话,传递要在iTerm窗口中执行的命令?

xterm模拟为-e,即

xterm -e sleep 10

我已经找到了官方文档,但是没有想过用SushiHangover这样的osascript来包装Applescript——非常好。他的答案不适合我,可能是因为我使用的是最新的beta 3.0版本,所以这里有一个可以工作(也简化了一点)。

#!/bin/bash
osascript - "$@" <<EOF
on run argv
tell application "iTerm"
    activate
    set new_term to (create window with default profile)
    tell new_term
        tell the current session
            repeat with arg in argv
               write text arg
            end repeat
        end tell
    end tell
end tell
end run
EOF

我同意Alex的观点,使用AppleScript是最好的方法。

这是我的"term"脚本,我chmod为可执行文件,并将其放在我的路径下的目录中。我可以这样使用:

引用包含的shell参数:

iterm "ls -l" 

传递多个命令来运行:

iterm "calculatesomthing" "exit"

传递多个命令,以分号分隔:

iterm "cd ~/mediaprojects; ./gitSyncAll; exit" 

自封闭bash/Applescript:

#!/bin/bash
read -r -d '' script <<'EOF'
on run argv
tell application "iTerm"
    activate
    set myterm to (make new terminal)
    tell myterm
        launch session "Default"
        tell the last session
            repeat with arg in argv
               say arg
               write text arg
            end repeat
        end tell
    end tell
end tell
end run
EOF
echo "$script" | osascript ``-'' $@

供参考:你可能想要删除"say"命令,我使用它作为每个cmd正在执行的远程/声音通知。我将一堆命令传递给多个自定义term配置文件/shell,这些配置文件/shell被平铺到一个大平面屏幕上,以显示复杂的多数据中心Azure部署的状态…

PS:我添加了一个要点,因为脚本最后一行的引号没有为某人正确剪切/粘贴@ https://gist.github.com/sushihangover/7563e1707e98cdf2b285

你最好使用Applescript。iTerm2有一些脚本示例。文档有点粗糙,但这些例子应该让你知道从哪里开始。

你可以将Applescript字符串包装在bash脚本中,然后使用osascript启动它:

#~/bin/bash
tell application "iTerm"
    # etc...
    exec command "$@"

然后运行脚本就像这样简单:

./run-in-iterm.sh "echo 'hello world'"

相关内容

  • 没有找到相关文章

最新更新