iTermで新しいタブを開き、そこでコマンドを実行します


17

私は新しいタブを開く方法を見つけましたiTerm

newtabi()
{
    osascript -e 'tell application "iTerm" to activate' -e 'tell application "System Events" to tell process "iTerm" to keystroke "t" using command down'
}

そして、新しいタブでいくつかのコマンドを実行したいと思います。単純なコマンドにしpwdます。どうやってするの?

実行すると...

newtabi && pwd

新しいタブは期待どおりに開きますが、pwdコマンドは新しいタブではなく、入力した古いタブで実行されますnewtabi && pwd

を使用しますzsh。私のOSはOS X 10.8.5

回答:


16

使用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"

1
以上のものより開かれた場合iTerms、それが正しいで新しいタブを開きiTerm、インスタンスが、書き込みpwdITERMの最初のインスタンスの最後のタブに
マキシムYefremov

2
@efrその通りです。回答を編集してに変更terminal 1しましたcurrent terminal。これで、最初に開いたウィンドウではなく、現在のウィンドウでコマンドを実行するはずです。
Lri

2
これは、iTerm2を搭載したmac 10.11.6では機能しませんでした。スクリプトエディターで、「予期しない行末ですが、識別子が見つかりました」と「端末」が強調表示されます
マイクブランドフォード

1
これはmacOS 10.14では動作しなくなりました:execution error: System Events got an error: osascript is not allowed to send keystrokes. (1002)
KernelSanders

12
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'

私は148:156: syntax error: Expected end of line but found identifier. (-2741)これに乗っています。
temporary_user_name


1

私は受け入れられた仕事の答えを得ることができませんでした。また、複数のコマンドを渡したいと思いました。これが私が思いついたものです。

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 \"${@}\""
}

使用例

newtabi pwd
newtabi 'cd ~/ && pwd'
newtabi 'echo \"Hello New Tab\"'

より複雑なアクションの場合は、コマンドを分割することをお勧めします。

code_folder="/path/to/code"

alias project="cd ${code_folder}/my-project/foo && yarn run start"

その後、 newtabi project


pwdコマンドを「newtabi '$ PWD / foo && yarn run start」のように見せるために現在のパスを渡す方法を教えてください。
ラジ

1
@Raj、いい質問です。私は個人的に、コマンドをより使いやすいエイリアスや関数に分割しています。別の例を追加しました。それが役に立てば幸い!
マークバルボー

@Marc、どうもありがとう!
ラジ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.