"nohup cat" - 接続ファイルの代わりにログファイルに内容全体を書き込みます。

次のコマンドを使用しました。

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.logmerge_R1.fq.gz

私が逃したものは何ですか?

ベストアンサー1

リダイレクトは左から右に処理されます。

次のコマンドを実行するとき

somecommand >f1 >f2 >f3

シェルはファイルを最初に作成するか、切り捨ててからf1(空)f2最後に作成しますf3。次に、somecommand標準出力をf3

コマンド出力を複数のファイルに保存するには、各出力ファイルのデータをコピーする必要があります。これは最も簡単な方法ですtee

somecommand | tee f1 f2 >f3

これにより、出力が送信され、somecommand2つのファイルteeにコピーされます。また、ユーティリティは独自の標準出力から同じデータを生成します。上記のコマンドではこれを 。f1f2teef3

あなたの場合は、以下を使用してください。

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まったく使用する必要はありません。

おすすめ記事