答案中的示例中的“东西”是什么意思如何在屏幕中运行程序,将所有输出重定向到文件并分离,因为该命令位于 $'' 区域之后。
screen -S workspace -X stuff $'ps aux > output-x\n'
答案1
根据评论:
stuff 发送字符,就像您键入它们一样
这似乎只有在会话在某个时刻(即创建时)附加时才有效。此外,由于它发送字符,因此执行命令需要发送换行符。
对于 Linux,对我有用的步骤:
screen -S some_session_name
- Ctrl+A D分离
screen -S some_session_name -X stuff 'command'$(echo -ne '\015')
我从中得到了指示“终端/生活”帖子:将命令发送到屏幕会话。
答案2
来自手动的:
将字符串string填充到当前窗口的输入缓冲区中。
会议肯定会不是需要永远附着。
让我们来分解一下:
- GNU 屏幕是一个程序,可让您与正在运行的程序断开连接,然后稍后重新连接到它们。
screen -dmS workspace
创建一个已断开连接的新屏幕。screen -S workspace -X [command]
会寄[命令]到屏幕会话调用工作区。- [命令]不是 bash 命令;这只是一个内部命令屏幕
CTRL+A
...:
与连接到时按 相同屏幕会话正常。 - 其他例子[命令]是
detach
或sessionname myNewName
. - 这[命令]用户选择的是
stuff
- 这只是“粘贴文本”进入它的会话。 stuff
需要一个字符串作为参数...因此,如果您提交stuff "hello"
然后重新连接到屏幕会话:您将看到hello
输入的单词,后面有闪烁的光标...- 你可以欺骗
screen
执行你的文本“粘贴”通过在文本末尾放置一个换行符(例如\n
或^M
)。 - 所以现在,如果你改变了你的“粘贴”
"hello"
完整命令的字符串"hello^M"
将如下所示:screen -S workspace -X stuff "hello^M"
... 现在,当您重新连接到屏幕时,您会看到它说Command 'hellohello' not found.
。 hello
现在,我们只需用我们想要执行的任何内容替换粘贴的文本即可!
例子:
screen -ls
> "No Sockets found."
screen -dmS workspace
screen -ls
> "There is a suitable screen on..."
screen -S workspace -X stuff "echo Hello World! PID $$ > hello.txt^M"
cat hello.txt
> Hello World! PID 1234