Bash
’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.log
而不是merge_R1.fq.gz
.我錯過了什麼?
重定向以從左到右的方式處理。
執行類似的命令時
somecommand >f1 >f2 >f3
shell 將首先創建或截斷(清空)文件
f1
,然後是f2
最後f3
。然後它從somecommand
連接到的標準輸出開始f3
。要將命令的輸出保存到多個文件,您必須為每個輸出文件複製數據。這是最容易完成的
tee
:somecommand | tee f1 f2 >f3
這會將輸出發送
somecommand
到tee
which 將其複製到兩個文件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
。