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 noFngetty
Fóruns Ubuntuque talvez o comando Unix cat
possa fazer isso, se usado corretamente. Infelizmente, seguir o comando sugerido não parece adicionar a saída completa do emerge
comando 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>&1
para 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
você não precisa disso
> cat
. na verdade, isso apenas cria outro arquivo chamadocat
no 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.emerge dev-qt/qtwayland > /home/fusion809/output.txt
vai salvarTODOSda saída stdout do seuemerge
comando para/home/fusion809/output.txt
. Tudo isso. se houver apenas 4 linhas no arquivo, é porqueemerge
imprimiu apenas 4 linhas no stdout.emerge pode ter impresso mais coisas para
stderr
. se você quiser capturar isso também, tenteemerge dev-qt/qtwayland >& /home/fusion809/output.txt
. Isso redireciona stdout e stderr para o mesmo arquivo.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).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
tee
A -a
opção diz para anexar em vez de apagar e sobrescrever.