Redirecionando stdout de dois programas


9

Estou executando uma ferramenta de verificação de memória (prog1) em um código C ++ (prog2), os quais me dão uma saída enorme e detalhada. Para procurar alguns bugs, preciso salvar essa saída em um arquivo.

Eu tentei redirecionar o stdout para um arquivo:

prog1 prog2 > outfile.txt

Mas isso me dá um arquivo contendo a saída de prog2, enquanto a saída de prog1 ainda está indo para o terminal.

Alguém sabe uma maneira de especificar que eu quero ambas as saídas para ir para um arquivo? Gosta (prog1 prog2) > outfile.txt?

Respostas:


19

Há uma boa chance de que ele prog1esteja gravando sua saída em erro padrão. Você pode redirecionar as duas saídas para um único arquivo com

prog1 prog2 > outfile.txt 2>&1

ou você pode dividir as saídas com

prog1 prog2 > outfile.txt 2> errors.txt

Isso não separa a saída dos programas individuais , separa os canais de saída. Consulte Quais são os operadores de controle e redirecionamento do shell? para detalhes.

Se você olhar para prog1a documentação, poderá encontrar uma opção para solicitar que armazene sua saída em um arquivo nomeado. Por exemplo, com strace,

strace -o strace.txt prog2 > outfile.txt

armazenaria stracea saída strace.txte tudo gravado na saída padrão outfile.txt.


5
2>&1tem que ir atrás > outfile.txt . A ordem dos redirecionamentos é importante.
Barmar

Nota para futuros leitores: @Barmar está absolutamente correto que a ordem relativa dos redirecionamentos é importante em relação um ao outro. Para aqueles menos familiares, a ordem dos redirecionamentos com relação aos argumentos do programa é importante apenas em alguns casos. O começo e o fim são locais comuns, mas o meio também acontece às vezes (por favor, não faça isso). echo >&2 hello worldé equivalente a echo hello world >&2. Mais informações aqui: tldp.org/LDP/abs/html/io-redirection.html
Morgen
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.