是否可以将文件内容发送到GNU屏幕会话?

Ant*_*een 6 serial-port communication gnu-screen

我通过串口连接到开发板,如此...

$ screen /dev/ttyUSB0 9600
Run Code Online (Sandbox Code Playgroud)

我现在已连接到启动加载程序,它要求我以srec格式发送文件.我有文件,但如何通过屏幕会话发送?

rze*_*erg 15

希望你自己已经解决了这个问题,但我会回答以防其他人有同样的问题.

GNU屏幕有一个命令readreg,您可以使用该命令将文件读入寄存器.在寄存器填充数据后,您可以使用该paste命令粘贴该数据.

屏幕内侧

在屏幕内按Ctr + a,然后:执行命令.然后你只需编写并按回车键:

readreg p /path/to/thefile
Run Code Online (Sandbox Code Playgroud)

执行完命令后,你应该发一条消息说Slurped X character into buffer.

然后,您可以再次按Ctr + a,然后按:,然后写入并按下回车键将数据粘贴到该缓冲区中:

paste p
Run Code Online (Sandbox Code Playgroud)

注意:p是寄存器的名称

而且你已经完成了.

外屏

您还可以使用该-X选项在屏幕会话外执行命令.如果您有一个名为"ucontroller"的屏幕会话连接到您的串行端口,您可以通过执行以下命令发送命令:

screen -S ucontroller -X readreg p /path/to/thefile
screen -S ucontroller -X paste p
Run Code Online (Sandbox Code Playgroud)

更多资源

我提供的信息直接来自手册页screen(1),这里是手册页的相关部分:

readreg [-e encoding] [register [filename]]

做两件事中的一件,取决于参数的数量:使用零或一个参数,它将粘贴缓冲区内容复制到指定的或在提示符处输入的寄存器中.

有两个参数,它将命名文件的内容读入寄存器,就像readbuf将屏幕交换文件读入粘贴缓冲区一样.您可以通过-e选项告诉屏幕文件的编码.以下示例将系统的密码文件粘贴到屏幕窗口中(使用寄存器p,其中保留副本):

Ca:readreg p/etc/passwd

Ca:粘贴p