web-dev-qa-db-ja.com

新しいターミナルタブを開き、スクリプトを実行します

2つのosascriptスクリプトをマージして、1つのコマンドで新しいターミナルタブを開き、echo helloのようなスクリプトをその新しいタブで実行できるようにする必要があります。

これは新しいターミナルタブを開きます。

osascript -e 'tell application "Terminal" to activate' -e 'tell application "System Events" to tell process "Terminal" to keystroke "t" using command down'

これは新しいウィンドウを開き、echo helloを実行します

osascript -e 'tell app "Terminal" do script "echo hello" end tell'
5
ThomasReggi

最も簡単な方法は「ttab」を使用することです

https://www.npmjs.com/package/ttab

ただ走れ ttab 'ls -la' ここに ls -laは、新しいタブで実行したいコマンドです。

注:ttabにはNPMのインストールが必要です

0
Raheel

新しいタブを作成するためのより良い方法はわかりませんが、do script "" in window 1を使用して最前面のタブまたはウィンドウでコマンドを実行できます。

tell application "Terminal"
    activate
    tell application "System Events" to keystroke "t" using command down
    repeat while contents of selected tab of window 1 starts with linefeed
        delay 0.01
    end repeat
    do script "echo a" in window 1
end tell
10
Lri

これが私たちが使用するスニペットです。私は提案します:

  • これを「タブ」と呼ばれる関数に入れます
  • コマンドには、関数に渡す変数を使用します

    osascript 
        -e "tell application \"Terminal\" to activate" \
            -e "tell application \"System Events\" to keystroke \"t\" using {command down}" \
            -e "do script \"echo hello\" in front window" \
        -e "end tell"
        > /dev/null
    
1
bbezanson

adayzdoneの答え に似ていますが、少し異なります:

osascript -e 'tell application "Terminal" to activate' \
  -e 'tell application "System Events" to keystroke "t" using {command down}' \
  -e 'tell application "Terminal" to do script "echo hello" in front window'
0
Hauke Hell

試してみてください

osascript -e 'tell application "Terminal" to activate' -e 'tell application "System Events" to tell process "Terminal" to keystroke "t" using command down' -e 'tell application "Terminal" to do script "echo hello" in tab 2 of window 1'
0
adayzdone