我使用了以下命令
nohup cat fastp-filtered/OZBenth*_R1.fastp.fq.gz > fastp-filtered-merged4racon/merge_R1.fq.gz > merge_R1.out.log 2>&1 &
但不幸的是,输出去了merge_R1.out.log
而不是merge_R1.fq.gz
.
我错过了什么?
我使用了以下命令
nohup cat fastp-filtered/OZBenth*_R1.fastp.fq.gz > fastp-filtered-merged4racon/merge_R1.fq.gz > merge_R1.out.log 2>&1 &
但不幸的是,输出去了merge_R1.out.log
而不是merge_R1.fq.gz
.
我错过了什么?
重定向以从左到右的方式处理。
执行类似的命令时
shell 将首先创建或截断(清空)文件
f1
,然后是f2
最后f3
。然后它从somecommand
连接到的标准输出开始f3
。要将命令的输出保存到多个文件,您必须为每个输出文件复制数据。这是最容易完成的
tee
:这会将输出发送
somecommand
到tee
which 将其复制到两个文件f1
和f2
. 该tee
实用程序还在其自己的标准输出中生成相同的数据,在上面的命令中,我们只需将其重定向到f3
.在你的情况下,你会使用
这
2>&1
也使得错误流也cat
被发送到tee
(这可能是不需要的,因为任何错误都会破坏生成的存档)。tee
截断它的输出文件,就像>
会做的那样。使用tee
其-a
选项将数据附加到输出文件。但是,您实际上不太可能将所有输出
cat
都写入两个文件,因此假设您要将错误保存到日志文件并将连接的存档保存到输出文件,您会改为执行根本不需要使用
tee
。