GNU 屏幕:除非附加屏幕,否则不能输入命令?

duk*_*vin 11 script bash shell gnu-screen

我有以下脚本

screen -d -m -S $1                #start screen minimized
screen -S $1 -X stuff "$beast     
"                                 #stuff commands
Run Code Online (Sandbox Code Playgroud)

除非我先附上屏幕,否则似乎东西的影响不会做任何事情?为什么会这样,我该如何修改这个脚本,这样我就不需要附加屏幕了?

Gil*_*il' 16

当您以分离模式 ( screen -d -m)启动 Screen 会话时,不会选择任何窗口,因此稍后发送的输入将screen -X stuff丢失。您需要明确指定要将按键发送到窗口 0 ( -p 0)。无论如何,这是一个好主意,以防您因任何原因碰巧在该 Screen 会话中创建其他窗口。

screen -S "$1" -p 0 -X stuff "$beast$(printf \\r)"
Run Code Online (Sandbox Code Playgroud)

printf \\r严格模拟Return密钥;许多但并非所有程序都接受换行符 ( \n)。)