我该如何从命令行运行一个iTerm会话,并在其中传入要在iTerm窗口中执行的命令?
xterm的对应命令是-e
,即:
xterm -e sleep 10
我该如何从命令行运行一个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是最好的选择。
以下是我的“iterm”脚本,我将其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 ``-'' $@
最好使用Applescript来完成此操作。iTerm2有一些脚本示例。文档有点不完整,但这些示例可以让您了解从何处开始。
您可以将Applescript字符串包装在bash脚本中,然后使用osascript
启动它:
#~/bin/bash
tell application "iTerm"
# etc...
exec command "$@"
然后运行该脚本就像这样简单:
./run-in-iterm.sh "echo 'hello world'"