usei o comando abaixo
nohup cat fastp-filtered/OZBenth*_R1.fastp.fq.gz > fastp-filtered-merged4racon/merge_R1.fq.gz > merge_R1.out.log 2>&1 &
mas infelizmente, a saída foi para merge_R1.out.log
e não para merge_R1.fq.gz
.
O que eu perdi?
usei o comando abaixo
nohup cat fastp-filtered/OZBenth*_R1.fastp.fq.gz > fastp-filtered-merged4racon/merge_R1.fq.gz > merge_R1.out.log 2>&1 &
mas infelizmente, a saída foi para merge_R1.out.log
e não para merge_R1.fq.gz
.
O que eu perdi?
Os redirecionamentos são processados da esquerda para a direita.
Ao executar um comando como
o shell primeiro criará ou truncará (esvaziará) o arquivo
f1
, depoisf2
e por últimof3
. Em seguida, ele começasomecommand
com sua saída padrão conectada aof3
.Para salvar a saída de um comando em vários arquivos, você teria que duplicar os dados para cada arquivo de saída. Isso é feito mais facilmente com
tee
:Isso envia a saída de
somecommand
paratee
que a duplica nos dois arquivosf1
ef2
. Otee
utilitário também produz os mesmos dados em sua própria saída padrão e, no comando acima, simplesmente redirecionamos isso paraf3
.No seu caso, você usaria
O
2>&1
faz com que o fluxo de erroscat
seja enviado paratee
também (isso pode não ser desejado, pois quaisquer erros corromperiam o arquivo resultante).tee
trunca seus arquivos de saída, assim como>
faria. Usetee
com sua-a
opção para anexar dados a um arquivo de saída.É improvável que você realmente quisesse que toda a saída
cat
fosse gravada em dois arquivos, portanto, supondo que você deseja salvar os erros no arquivo de log e os arquivos concatenados no arquivo de saída, você fariasem a necessidade de usar
tee
em tudo.