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

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

Eu gostaria de poder escrever a saída dos comandos do Portage, junto com outros comandos, que eu executo em tty (ou seja, os terminais de toda a tela iniciados com Ctrl+ Alt+ onde n representa um número inteiro entre 1 e 6. Esses terminais são comecei a usar o comando, que eu saiba) onde não há área de transferência, para um arquivo de texto. Agora eu li noFngettyFóruns Ubuntuque talvez o comando Unix catpossa fazer isso, se usado corretamente. Infelizmente, seguir o comando sugerido não parece adicionar a saída completa do emergecomando 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 escreveu apenas quatro linhas de saída em 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 em output.txt.

Responder1

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

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

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

Agora, se você quiser a saída padrãoeerro ao entrar nomesmoarquivo, use 2>&1para instruir o shell a enviar a saída de erro padrão para o mesmo local da saída padrão:

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

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

Obrigado pela pergunta informativa e bem pensada!

Responder2

  1. você não precisa disso > cat. na verdade, isso apenas cria outro arquivo chamado catno diretório atual. e se você pretendia digitar | cat, isso é supérfluo, você pode redirecionar a saída sem canalizá-la por meio de cat.

  2. emerge dev-qt/qtwayland > /home/fusion809/output.txtvai salvarTODOSda saída stdout do seu emergecomando para /home/fusion809/output.txt. Tudo isso. se houver apenas 4 linhas no arquivo, é porque emergeimprimiu apenas 4 linhas no stdout.

  3. emerge pode ter impresso mais coisas 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á existir, ou cria-o, se não existir (dependendo das opções do shell).

  5. se você deseja capturar a saída para um arquivoEvê-lo na tela ao mesmo tempo, use tee. Por exemplo:

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

teeA -aopção diz para anexar em vez de apagar e sobrescrever.

informação relacionada