다음 명령을 사용했습니다.
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
두 개의 파일 과 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
전혀 사용할 필요가 없습니다.