回显到屏幕会话和文件

回显到屏幕会话和文件

我想要执行以下命令:

echo $RANDOM 2>&1 >> test.txt 

在此屏幕会话中:

screen -S test -X eval 'stuff "echo $RANDOM 2>&1 >> test.txt\015"'

然而,它并没有执行,而是回应了以下内容:

echo  2>&1 >> test.txt

我究竟做错了什么?

我希望该echo命令不仅能将其输出保存到test.txt,而且还能将该输出实际显示到屏幕上。

答案1

你可以这样做:

screen -S test -X exec bash -c 'echo RANDOM=$RANDOM 2>&1 >> test.txt'

如果想要同时查看输出并保存,可以使用tee

screen -S test -X exec bash -c 'echo RANDOM=$RANDOM 2>&1 | tee -a test.txt'

答案2

$ screen -S test -X stuff 'echo \$RANDOM >> /tmp/test 2>&1\n'

或者如果你想复制输出并进行管理,而不需要tee出于某种原因

$ screen -S shell -X stuff 'echo \$RANDOM 2>&1 | while read; do printf "%s\\n" "\$REPLY"; printf "%s\\n" "\$REPLY" >> /tmp/test; done\n'

我假设您想要重定向到文件两者,stdinstdout2>&1 >> test.txt是一个意外的错误。

相关内容