Как запустить сеанс iTerm из командной строки, передав команду, которая должна быть выполнена в окне iTerm?
Аналогом xterm является -e
, т.е.
xterm -e sleep 10
Как запустить сеанс iTerm из командной строки, передав команду, которая должна быть выполнена в окне iTerm?
Аналогом xterm является -e
, т.е.
xterm -e sleep 10
Я согласен с Алексом, лучше всего использовать 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 ``-'' $@
К вашему сведению: вы можете удалить команду «говорить», я использую ее как удаленное / звуковое уведомление о каждом выполняемом cmd. Я передаю кучу cmds в несколько пользовательских профилей/оболочек iTerm, которые отображаются на большом плоском экране, чтобы показать статус сложного развертывания Azure с несколькими контроллерами домена...
PS: я добавил суть, поскольку кавычки в последней строке скрипта не были правильно вырезаны/вставлены для кого-то @ https://gist.github.com/sushihangover/7563e1707e98cdf2b285
Я нашел официальную документацию, но не додумался дополнить Applescript osascript как SushiHangover - очень приятно. Его ответ не сработал для меня, вероятно, потому, что я использую последнюю бета-версию 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'"