Como escrevo a saída do Portage para um arquivo txt?

2

Eu gostaria de poder escrever a saída dos comandos do Portage, junto com outros comandos, que eu executo em tty (isto é, os terminais de tela inteira iniciados com Ctrl + Alt + F n onde n representa um inteiro entre 1 e 6. Estes terminais são iniciados usando o comando getty , tanto quanto eu saiba) sem área de transferência, para um arquivo de texto. Agora eu li nos fóruns do Ubuntu que talvez o comando cat do Unix possa fazer isso, se corretamente usava. Infelizmente, seguindo o comando sugerido, não parece adicionar a saída completa do comando emerge a um arquivo de texto. Veja eu corri:

emerge dev-qt/qtwayland > cat >> /home/fusion809/output.txt

onde fusion809 é meu nome de usuário, e ele só escreveu quatro linhas de saída para output.txt, a saber:

Calculating dependencies  ....... .. ....... done!
[ebuild   R    ] media-libs/mesa-11.0.4  USE="-wayland*" ABI_X86="32*"
[ebuild   R    ] dev-qt/qtgui-5.5.1  USE="-egl* -evdev* -ibus*"
[ebuild   R    ] dev-qt/qtwayland-5.5.1  USE="-egl*"

Eu também tentei:

emerge dev-qt/qtwayland > /home/fusion809/output.txt

e:

emerge dev-qt/qtwayland >> /home/fusion809/output.txt

ambos escreveram a mesma saída para output.txt.

    
por Brenton Horne 03.11.2015 / 13:11

2 respostas

2

Você está no caminho certo. No Unix / Linux também há um fluxo de erros. Todo comando recebe entrada padrão, saída padrão e erro padrão.

Você está trabalhando com a saída padrão. Para capturar também o fluxo de erro padrão do comando, use 2> . Por exemplo:

emerge dev-qt/qtwayland > emerge.out 2> emerge.err

Agora, se você quiser que o erro de saída padrão e entre no arquivo mesmo , use 2>&1 para dizer ao shell para enviar a saída de erro padrão para o mesmo coloque como a saída padrão:

emerge dev-qt/qtwayland > emerge.out 2>&1

Além disso, se você precisar fazer referência e aprender mais, você pode sempre procurar na página do manual do shell man sh .

Obrigado pela pergunta informativa e bem pensada!

    
por 03.11.2015 / 13:38
0
  1. você não precisa do > cat . Na verdade, isso cria apenas outro arquivo chamado cat no diretório atual. e se você quisesse digitar | cat , isso é supérfluo, você pode redirecionar a saída sem canalizá-la através do cat.

  2. emerge dev-qt/qtwayland > /home/fusion809/output.txt salvará ALL da saída stdout do seu comando emerge para /home/fusion809/output.txt . Tudo isso. se houver apenas 4 linhas no arquivo, isso ocorre porque emerge imprimiu apenas 4 linhas no stdout.

  3. o emerge pode ter imprimido mais material para stderr . Se você quiser capturar isso também, tente emerge dev-qt/qtwayland >& /home/fusion809/output.txt . Isso redireciona stdout e stderr para o mesmo arquivo.

  4. a diferença entre > e >> é que > apaga o arquivo se ele existir antes de criá-lo e >> anexa ao arquivo se ele já existe ou cria se não existir t (dependendo das opções do shell).

  5. se você quiser capturar a saída para um arquivo AND , veja-a na tela ao mesmo tempo, use tee . Por exemplo:

emerge dev-qt/qtwayland |& tee -a /home/fusion809/output.txt

A opção tee do -a diz para anexar em vez de apagar e sobrescrever.

    
por 03.11.2015 / 13:37