如何在system2r命令中将stderr和stdout输出附加到文件中?

如何在system2r命令中将stderr和stdout输出附加到文件中?,r,R,我尝试从R(Ubuntu上的3.3.1)执行shell命令,如下所示: system2(command=“ls”, args=c(“-l”,“/etc/”, stdout=“/tmp/stdout.log”, stderr=“/tmp/stderr.log”, 等待=真) 不幸的是,每次执行此操作时,日志文件的内容都会被覆盖。我们可以指定它执行追加而不是覆盖吗?这将按照我想要的方式执行 system(command=“ls-l/etc/>/tmp/stdout.log 2>>/tmp/stde

我尝试从R(Ubuntu上的3.3.1)执行shell命令,如下所示:

system2(command=“ls”,
args=c(“-l”,“/etc/”,
stdout=“/tmp/stdout.log”,
stderr=“/tmp/stderr.log”,
等待=真)

不幸的是,每次执行此操作时,日志文件的内容都会被覆盖。我们可以指定它执行追加而不是覆盖吗?

这将按照我想要的方式执行

system(command=“ls-l/etc/>/tmp/stdout.log 2>>/tmp/stderr.log”,
等待=真)

这是我想要的方式

system(command=“ls-l/etc/>/tmp/stdout.log 2>>/tmp/stderr.log”,
等待=真)

这一个更好,因为它允许使用更现代的系统命令,并允许进行更清晰的日志记录


result这一个更好,因为它允许使用更现代的系统命令,并允许进行更清晰的日志记录


result使用
stderr=TRUE
捕获字符向量,然后将其写入具有
append=TRUE
的文件?不幸的是,通过这种方式捕获的已知字节数限制为8095字节。如果命令输出更多数据怎么办?引用文档:“如果stdout=TRUE或stderr=TRUE,一个给出命令输出的字符向量,每个字符串一行。(超过8095字节的输出行将被拆分。)”您可能只会得到比行更多的条目,但是超过8095个字符的行听起来不太可能出现在大多数程序或
shell(“ls-l/etc/>/tmp/lslog.log 2>&1”,wait=TRUE)
?我知道shell或系统的东西,但有点想使用system2来缓解所有的混乱。。。无论如何,感谢您使用
stderr=TRUE
捕获字符向量,然后将其写入带有
append=TRUE
的文件?不幸的是,通过这种方式捕获的已知字节数限制为8095字节。如果命令输出更多数据怎么办?引用文档:“如果stdout=TRUE或stderr=TRUE,一个给出命令输出的字符向量,每个字符串一行。(超过8095字节的输出行将被拆分。)”您可能只会得到比行更多的条目,但是超过8095个字符的行听起来不太可能出现在大多数程序或
shell(“ls-l/etc/>/tmp/lslog.log 2>&1”,wait=TRUE)
?我知道shell或系统的东西,但有点想使用system2来缓解所有的混乱。。。无论如何谢谢你