我想知道如何在屏幕会话中执行一个命令。 我search了,我发现这个:
screen -S nameofscreen -X stuff "command"
当我input这个命令的时候,这个命令是在屏幕上input的,但是不会被执行。 所以我的问题是如何使用这个命令按下input。
在bash
shell中,您可以使用ctrl-V
将不可打印的字符显式放入字符串中。 所以尝试按ctrl-V
ctrl-L
ctrl-V
ctrl-M
在你的命令结束之前"
。
我会做这样的事情:
screen -S sessionName bash -c 'cmd; exec bash'
它开始一个新的会话执行cmd
并启动shell(否则它会删除该新的会话)。
-X
将允许你发送输入到指定的会话 – 这就是为什么你的命令没有执行。 要执行它,你需要添加像保罗建议的输入符号。 可以使用Ctrl + V和Enter键完成 。 那会产生那个^M
所以:
screen -S sessionName -X stuff 'cmd^M'
这本身不会附加一个独立的会议。
在bash中,可以在$'...'
构造中使用\n
:
screen -S nameofscreen -X stuff $'command\n'