mac, как запустить команду в другой вкладке / окне терминала


1

В Windows я могу запустить любую программу из командной строки, набрав

c:> start startup.sh

Windows запустит файл startup.sh в другом окне командной строки (терминала).

Как я могу сделать то же самое в mac (linux bash), чтобы скрипт startup.sh запускался в
1) другом окне терминала?
2) другая вкладка терминала?

Обновление: Как уже упоминалось, я хочу запустить программу (например, mc) или сценарий оболочки в другой вкладке или окне - не просто сценарий оболочки.


1
Поможет ли что-нибудь на этой странице? stackoverflow.com/questions/7171725/…
Туфф

Ответы:


1

Вы можете запустить скрипт в новом экземпляре терминала с помощью:

open -b com.apple.terminal test.sh

где test.shимя скрипта, который вы хотите запустить.

Источник


@anjanbecchu нашел следующий скрипт:

TAB_NAME=$1; COMMAND=$2; osascript -e "tell application \"Terminal\"" -e "tell application \"System Events\" to keystroke \"t\" using {command down}" -e "do script \"printf '\\\e]1;$TAB_NAME\\\a'; $COMMAND\" in front window" -e "end tell" > /dev/null

когда я попробовал эту команду для запуска сценария оболочки, она работает; Однако, когда я попытался использовать ту же команду для запуска Midnight Commander (MC), он предполагал, что MC находится в текущем каталоге. Я не хочу вводить полный путь mc. Есть ли способ, которым он использует $ PATH, чтобы найти то, что я хочу? Кроме того, как можно запустить скрипт / программу в другой вкладке?
anjanbacchu

@anjanbacchu Я не думаю, что вы можете запустить его в другой вкладке. Проблема в том, что не существует простого способа поговорить с текущим втирающим приложением Terminal из командной строки. Даже вышеупомянутое не говорит напрямую с ним - в нем используется механизм открытого типа файлов ОС, аналогичный тому, если вы дважды щелкнули по файлу. Работа командной строки в Windows сильно отличается от * nix (OS X, Linux), что делает то, что вы хотите сделать, очень сложно.
Darth Android

Я нашел сценарий в сети, который может сделать то, что я искал. Вот функция оболочки. TAB_NAME = $ 1; COMMAND = $ 2; osascript -e "сообщить приложению \" Терминал \ "" -e "сообщить приложению \" Системные события \ "о нажатии клавиши \" t \ "с помощью {command down}" -e "do script \" printf '\\\ e] 1; $ TAB_NAME \\\ а '; $ COMMAND \ "в переднем окне" -e "end tell"> / dev / null
anjanbacchu
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.