"nohup cat" - 연결 파일 대신 로그 파일에 전체 내용을 씁니다.

"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

이렇게 하면 의 출력이 전송되어 somecommand두 개의 파일 과 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전혀 사용할 필요가 없습니다.

관련 정보