コマンドラインからiTermセッションを実行し、iTermウィンドウで実行するコマンドを渡すにはどうすればよいですか?
Xtermアナログは-e
、つまり.
xterm -e sleep 10
私はAlexに同意し、AppleScriptを使用するのが最善の方法です。
これが私の「iterm」スクリプトで、実行可能ファイルとしてchmodし、パスにあるディレクトリにあります。私はそれをこのように使うことができます:
同封のシェル引数を引用する:
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のリモート/可聴通知として使用します。一連のコマンドを複数のカスタムiTermプロファイル/シェルに渡します。シェルは大きなフラットスクリーンに並べて表示され、複雑なマルチDCAzure展開のステータスを表示します...
PS:スクリプトの最後の行の引用符が誰かのために適切にカット/貼り付けされなかったため、要点を追加しました@ https://Gist.github.com/sushihangover/7563e1707e98cdf2b285
公式ドキュメント を見つけましたが、ApplescriptをSushiHangoverのようなosascriptで包むとは思っていませんでした-とても素敵です。彼の答えは私にはうまくいきませんでした。おそらく私が最新のベータ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
これにはApplescriptを使用するのが最善です。 iTerm2にはいくつかの 例 のスクリプトがあります。ドキュメントは少し見苦しいですが、それらの例はあなたにどこから始めるべきかについての考えを与えるはずです。
Applescript文字列をbashスクリプトでラップしてから、osascript
を使用して起動できます。
#~/bin/bash
tell application "iTerm"
# etc...
exec command "$@"
次に、スクリプトの実行は次のように簡単です。
./run-in-iterm.sh "echo 'hello world'"