我想要执行以下命令:
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'
我假设您想要重定向到文件两者,stdin
而stdout
这2>&1 >> test.txt
是一个意外的错误。