Gravar para saída de arquivo de dois comandos sendo executados juntos em um terminal

0

Eu preciso escrever para a saída do arquivo de dois comandos sendo executados juntos em um terminal, como no exemplo acima, ou registrando a saída do primeiro, quando o segundo também é runnign - como fazer isso?

sudo btmon ; sudo hcitool lescan

Eu tentei algo como

{ sudo btmon ; sudo hcitool lescan ;} > file.txt mas id não deu fora de ambos. Como trabalho em volta, eu os executo em dois terminais diferentes

sudo btmon > file.txt de um

e

sudo hcitool lescan de outro

e funcionou de uma forma que eu aceito, tive a necessidade de log a partir do primeiro comando. Mas eu quero ter tudo em um terminal com apenas um tipo de string e sei que é possível. A única questão é como isso é feito?

    
por Ruslan Gerasimov 16.07.2017 / 17:18

1 resposta

4

Como ninguém parecia criar uma resposta, eu faço. Vou usar extratos de esta fonte

A solução nos comentários

(sudo btmon & sudo hcitool lescan ) &> scan_log.txt

Ele usa () em vez de {} . Além disso, o & amp; > significa que não apenas STDOUT mas também STDERR serão encaminhados. Como parece, uma dessas ferramentas usou o STDERR para a saída, então foi necessário. Eu quero explicar os problemas dos comentários um pouco, portanto vou explicar a diferença entre () e {} primeiro.

(comando)

% bl0ck_qu0te%

{comando; }

% bl0ck_qu0te%

Olhando para a primeira sugestão, o OP simplesmente esqueceu o ; porque A lista seguinte do ponto e vírgula (ou nova linha) é necessária. entre {}, portanto ambas as soluções a seguir devem resolver o problema:

{ sudo btmon; sudo hcitool lescan; } &> scan_log.txt

(sudo btmon & sudo hcitool lescan) &> scan_log.txt
    
por ADDB 16.07.2017 / 21:06