次のコマンドを使用しました。
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
。
私が逃したものは何ですか?
答え1
リダイレクトは左から右に処理されます。
次のコマンドを実行するとき
somecommand >f1 >f2 >f3
シェルはファイルを最初に作成するか、切り捨ててからf1
(空)f2
最後に作成しますf3
。次に、somecommand
標準出力をf3
。
コマンド出力を複数のファイルに保存するには、各出力ファイルのデータをコピーする必要があります。これは最も簡単な方法ですtee
。
somecommand | tee f1 f2 >f3
これにより、出力が送信され、somecommand
2つのファイルtee
にコピーされます。また、ユーティリティは独自の標準出力から同じデータを生成します。上記のコマンドではこれを 。f1
f2
tee
f3
あなたの場合は、以下を使用してください。
nohup cat fastp-filtered/OZBenth*_R1.fastp.fq.gz 2>&1 |
tee fastp-filtered-merged4racon/merge_R1.fq.gz >merge_R1.out.log &
これ2>&1
により、エラーストリームもcat
送信されますtee
(エラーによって結果のアーカイブが破損する可能性があるため、不要になる可能性があります)。
tee
完了したら出力ファイルを切り捨てます>
。出力ファイルにデータを追加するために、そのtee
オプションと一緒に使用されます。-a
しかし、実際にはすべての出力を両方のファイルに書き込む可能性はないので、保存すると仮定しますcat
。間違いログファイルに追加してアーカイブを出力ファイルにリンクするには、次の手順を実行する必要があります。
nohup cat fastp-filtered/OZBenth*_R1.fastp.fq.gz \
>fastp-filtered-merged4racon/merge_R1.fq.gz \
2>merge_R1.out.log &
tee
まったく使用する必要はありません。