open new tab in iTerm and execute command there
Question
I have found way to open new tab in iTerm
:
newtabi()
{
osascript -e 'tell application "iTerm" to activate' -e 'tell application "System Events" to tell process "iTerm" to keystroke "t" using command down'
}
And I want to execute some commands in new tab. Let it be simple command pwd
. How to do it?
If I run ...
newtabi && pwd
The new tab is opened as expected, but pwd
command is executed not in new tab but in old one, where I typed newtabi && pwd
I use zsh
. My os is OS X 10.8.5
Solution
Use tell session -1 of current terminal to write text "pwd"
:
activate application "iTerm"
tell application "System Events" to keystroke "t" using command down
tell application "iTerm" to tell session -1 of current terminal to write text "pwd"
OTHER TIPS
osascript \
-e 'tell application "iTerm" to activate' \
-e 'tell application "System Events" to tell process "iTerm" to keystroke "t" using command down' \
-e 'tell application "System Events" to tell process "iTerm" to keystroke "ls"' \
-e 'tell application "System Events" to tell process "iTerm" to key code 52'
As of at least macos Mojave, iTerm 3.2.8, if you run:
$ open -a iTerm .
It will add it as a tab to the current window.
I couldn't get the accepted answer to work. I also wanted to pass multiple commands. This is what I came up with.
newtabi(){
osascript \
-e 'tell application "iTerm2" to tell current window to set newWindow to (create tab with default profile)'\
-e "tell application \"iTerm2\" to tell current session of newWindow to write text \"${@}\""
}
Example usage
newtabi pwd
newtabi 'cd ~/ && pwd'
newtabi 'echo \"Hello New Tab\"'
For more complex actions, I would recommend breaking up the commands.
code_folder="/path/to/code"
alias project="cd ${code_folder}/my-project/foo && yarn run start"
Then, newtabi project
Licensed under: CC-BY-SA with attribution
Not affiliated with apple.stackexchange