按标题查找xterm窗口,输入一个命令并使用python/bash按return

2024-10-02 02:31:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个自定义标题的xterm窗口。xterm按以下方式启动:xterm -T customTitle。在

我想从另一个xterm或gnome终端上运行的python/bash脚本向这个xterm窗口输入一个命令(例如ls-l),然后按Return(enter)执行命令。在

这可能吗?有没有一种方法可以通过窗口标题或pid找到一个活动的xterm并从另一个终端执行命令?在

如果这不能以编程的方式完成,是否有一些python库可以让我通过给定的标题找到窗口,并模拟键盘,就像有人在输入文本一样?在

谢谢!在


Tags: 方法命令脚本bash终端标题return方式
2条回答

稍微扩展一下Aro的答案,如果您有一个PID并想找出进程正在使用的tty,一个ps命令,比如ps o tty= «PID»。用实际的PID号代替«PID»。在

ps的o选项告诉它下面是一个输出格式列表。本例中的列表是tty=,它选择用于输出的控制tty(终端),并为列指定一个空白标签,该标签将取消标题行。 以下是我的系统中的一个示例转录本(带提示符):

> ps o tty= 8797
pts/8
> T=$(ps o tty= 8797); echo $T
pts/8

关于响应提示的问题,^{}命令可能是相关的。但是,我相信您需要编写一个expect脚本,该脚本在目标终端上运行,而不是在其他控制终端上运行。为此,您可以在expect脚本中包含xterm -T customTitle命令,但是说xterm -T customTitle -e somescript可能更容易,其中somescript是一个expect script,或者是一个shell脚本,它设置了内容,然后运行expect。如果您试图自动执行的命令是在没有任何用户交互的情况下运行的,那么省略xterm命令,只在后台进程中运行它。在

您可以尝试此操作,运行命令并将输出重定向到xterm终端-

>>> fp = open('/dev/pts/5','w')
>>> subprocess.Popen('ls -l',shell=True,stdout=fp, stderr=fp)

/dep/pts/5是从xterm上的“tty”命令获取的文件描述符!在

希望这有帮助!在

相关问题 更多 >

    热门问题