выполнение команды tmux, обычно содержащей '\;' используя subprocess.run - PullRequest
0 голосов
/ 07 февраля 2020

Прежде всего, да. Я прочитал несколько вопросов, касающихся этой проблемы, и я понимаю, что экранирование должно быть ненужным (я даже указал shell=False).

моя проблема в том, что

subprocess.run(['tmux', '-n top', 'top', '; neww'])

вызывает tmux сеанс, чтобы открыть и немедленно закрыть

Я пытаюсь достичь того же результата, что и выполнение

tmux new -n top top \; neww

в оболочке.

У меня также есть попытался указать shell=True и использовать '\\; neww', а также r'\; neww'

, не похоже, что что-либо записывается в stderr.

1 Ответ

1 голос
/ 07 февраля 2020

Каждый аргумент должен быть индивидуальным:

>>> import subprocess
>>> subprocess.run(['tmux', 'new', '-d', '-n', 'top', 'top', ';', 'neww'])
CompletedProcess(args=['tmux', 'new', '-d', '-n', 'top', 'top', ';', 'neww'], returncode=0)
>>>
...