eu quero salvar o resultado de um comando em um arquivo

3

Estou usando a ferramenta cppcheck para analisar o código-fonte.

No prompt do shell no compilador gcc, eu dei o comando da seguinte forma

$ cppcheck abc.cpp  

A saída é

checking abc.cpp...   
(error) Possible null pointer dereference: <var> - otherwise it is redundant to check if   <var> is null at line 100    
segmentation fault

Eu quero que esta saída seja salva em um arquivo, então eu dei o comando da seguinte forma

$ cppcheck abc.cpp 2> abc.txt

Mas o conteúdo do arquivo abc.txt é o seguinte

checking abc.cpp...  

Está apenas salvando a primeira linha, a parte principal do erro está faltando no arquivo abc.txt.

Qual comando devo usar para obter todas as linhas de saída em um arquivo? O manual da ferramenta cppcheck é aqui .

    
por user7164 03.05.2011 / 11:54

3 respostas

7

Elimine o 2 do seu comando e use apenas > como o operador de redirecionamento.

Ao usar 2> , você está redirecionando o fluxo de erros (STDERR) para um arquivo; o que parece que você quer é o fluxo de saída regular (STDOUT).

cppcheck abc.cpp > abc.txt

Se você quiser que ambos transmitam para o seu arquivo, você pode conectar 2 (o fluxo de erro) a 1 (o fluxo de saída padrão) assim:

cppcheck abc.cpp > abc.txt 2>&1

Ou use o sintaxe de atalhos sugerida para pegar tudo.

    
por 03.05.2011 / 11:58
4

Você provavelmente precisará redirecionar o stdout e o stderr para o seu arquivo

cppcheck abc.cpp  &>abc.txt
    
por 03.05.2011 / 11:57
3

Caleb está certo sobre o uso de > mas você também pode usar o comando tee se quiser ver os logs ao mesmo tempo que salva em um arquivo.

cppcheck abc.cpp | tee my.file.txt

E também deve funcionar com o 2 > & 1.

cppcheck abc.cpp 2>&1 | tee my.file.txt
    
por 03.05.2011 / 12:06

Tags