如何从 Python 脚本控制 gnome-terminal?

如何从 Python 脚本控制 gnome-terminal?

我正在 PyGtk 中开发一个应用程序,并想启动一个 gnome-terminal 并向其输出命令。

我的用户应该能够修改命令,或者忽略使用向上箭头......等等。

我已经能够启动终端,但不知道如何发送命令。

我的应用程序的启动方式如下:

class App(Gtk.Window):

    def __init__(self):

        Gtk.Window.__init__(self)

        process=subprocess.Popen(["gnome-terminal", "--class=App", "--name=app"], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        response,error=process.communicate()

答案1

根据 python 文档,你想使用 Popen.communicate(input=None) http://docs.python.org/2/library/subprocess.html#popen-objects

我建议您在将命令发送到另一个进程之前先从 python 编辑命令。例如,显示一个带有默认命令的窗口,并允许用户在执行之前编辑(或取消)它。此外,“gnome-terminal”可能对此来说有点过分,“/bin/bash”应该就足够了。

如果这对您不起作用,您也可以尝试这个。(取决于您实际从终端运行的内容)由于您提到用户可以编辑命令,所以在运行之前验证输入是个好主意。

command = ['ls','-l']
output = subprocess.check_output( command )
print( output )

答案2

我有同样的问题。

使用 tmux 解决了这个问题,感谢这个答案(复制如下)。

在应接收命令的终端中,使用标识符启动 tmux:

tmux new-session -s MYSES

使用以下命令向其发送命令:

tmux send-keys -t MYSES "ls -l"$'\n'

相关内容