5

Мне нужно объединить два сценария 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'

5 ответов5

8

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

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

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

    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

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

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

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

Примечание: ttab требует установки NPM

0

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

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

Пытаться

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'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .