Откройте новую вкладку терминала и выполните скрипт

Мне нужно объединить два сценария osascript, чтобы с помощью одной команды я мог открыть новую вкладку терминала и выполнить такой сценарий, как 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'

6 ответов

Решение

Самый простой способ - использовать "ttab"

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

Просто беги ttab 'ls -la' Вот ls -la это команда, которую я хочу выполнить в новой вкладке.

Замечания: ttab Нужна установка НПМ

Я не знаю лучшего способа создать новую вкладку, но вы можете запустить команду в самой передней вкладке или окне с помощью 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

Вот фрагмент, который мы используем. Я бы предложил:

  • Поместите это в функцию, как та, которая называется "вкладка"
  • для команды используйте переменную, которую вы передаете в функцию

    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
    

Похоже на ответ адайздоне, но немного отличается:

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'

Пытаться

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'
  • Чтобы открыть новый терминал, если терминал не существует
  • если терминал существует, откройте новую вкладку
  • Не забудьте изменить раздел «Ваш скрипт» (x2).
      tell application "Terminal"
    activate
    if not (exists window 1) then
        do script "your script"
        do script "your script2"
    else
        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 "your script" in window 1
        do script "your script2" in window 1
    end if
end tell

ссылка: /questions/887582/otkrojte-novuyu-vkladku-terminala-i-vyipolnite-skript/887595#887595

Другие вопросы по тегам