Я видел похожие вопросы (например, Выполнение команды в новом окне терминала Mac OS X ), но мне нужно подтвердить эту команду и ее ожидаемое поведение в Mac (которого у меня нет).Если кто-нибудь может запустить в Python 3 Mac следующее:
import subprocess, os
def runcom(bashCommand):
sp = subprocess.Popen(['osascript'], stdin=subprocess.PIPE, stderr=subprocess.PIPE)
sp.communicate('''tell application "Terminal"\nactivate\ndo script with command "{0} $EXIT"\nend tell'''.format(bashCommand))
runcom('''echo \\"This is a test\\n\\nThis should come two lines later; press any key\\";read throwaway''')
runcom('''echo \\"This is a test\\"\n\necho \\"This should come one line later; press any key\\";read throwaway''')
runcom('''echo \\"This is testing whether I can have you enter your sudo pw on separate terminal\\";sudo ls;\necho \\"You should see your current directory; press any key\\";read throwaway''')
Во-первых, и в основном, правильна ли команда «порождает новый терминал и выполняет»?(Для справки, эта версия функции runcom
взята из этого ответа ниже и намного чище, чем мой оригинал.)
Что касается реальных тестов: первый тест, которыйВнутренние двойные экранированные символы \\n
действительно работают.Вторые тесты, которые мы можем поместить (неэкранированные) переводы строк в «скрипт» и по-прежнему работать так же, как точка с запятой.Наконец, последний проверяет, можете ли вы вызывать процесс sudo в отдельном терминале (моя конечная цель).
Во всех случаях новый терминал должен исчезнуть, как только вы «нажмете любую клавишу».Пожалуйста, также подтвердите это.
Если один из них не работает, коррекция / диагностика будет наиболее ценной.Также ценится: есть ли более питонский способ порождения терминала на Mac, чем выполнение на нем (sudo, extended) команд bash?
Спасибо!