Como Salvar a Saída do Terminal em um Arquivo no Linux

Arquivo de Saída do Terminal 00 Imagem em Destaque

O terminal é o coração de um sistema Linux. Todo programa que roda no Linux está sendo executado sob uma linha de comando do terminal. Isso inclui programas massivos, como navegadores da web e até mesmo simples, como editores de texto. Assim, ser capaz de usar corretamente o terminal é um passo importante se você deseja entender como o sistema operacional funciona.

Com isso, enquanto trabalha no terminal Linux, você pode querer salvar a saída do terminal de um comando em um arquivo. Este arquivo pode ser usado como informação para outra operação ou simplesmente para registrar a atividade do terminal. Este artigo ensina cinco maneiras de salvar a saída do terminal em um arquivo.

Índice

    1. Usar Terminais Específicos
    1. Redirecionamento de Saída
    1. Tee
    1. Script
    1. Captura de Framebuffer do Terminal
  • Perguntas Frequentes

Leia também: Como Usar o Comando dd no Linux

1. Usar Terminais Específicos

A primeira maneira de lidar com isso é usando um Terminal que suporte salvar a saída em um arquivo. Por exemplo, o terminal Konsole que vem com uma instalação padrão do KDE inclui uma opção para escrever a saída em um arquivo.

Para fazer isso, pressione o botão “Arquivo” na barra de menu e clique em “Salvar saída como … “

Arquivo de Saída do Terminal 05 Konsole Salvar Saída Como

Isso abrirá uma janela de diálogo onde você pode salvar a saída do terminal. A partir daí, você pode escolher onde deseja salvar o arquivo.

Você também pode salvar a saída de um comando no terminal GNOME. Basta clicar com o botão direito no terminal e pressionar “Copiar saída como HTML.” Isso, então, carregará o texto do terminal para sua área de transferência. A partir daí, você pode colá-lo em qualquer editor de texto.

Arquivo de Saída do Terminal 06 Gnome Copiar Saída Html

Leia também: Como Usar o Comando Rm no Linux

2. Redirecionamento de Saída

Outra maneira de lidar com isso é usar os operadores embutidos do shell UNIX. Estas são funções padrão no Linux e podem redirecionar a saída de texto de um programa para um arquivo. Existem três operadores que podem fazer isso:

  • O operador > criará ou substituirá o conteúdo de um arquivo com a saída do seu programa. Isso é útil se você quiser despejar e visualizar o resultado atual do seu programa no mesmo arquivo.
  • O operador >> também criará um arquivo com a saída do seu programa. No entanto, este operador apenas anexará a saída em vez de substituí-la. Isso é útil se você quiser despejar o resultado do seu programa continuamente em um único arquivo.
  • Por último, o operador 2> é um tipo especial de operador que imprimirá erros que serão relatados. Isso é muito útil durante a depuração, pois mostra o problema que o programa encontrou antes de falhar.

Arquivo de Saída do Terminal 07 Exemplo de Redirecionamento

Sabendo disso, a maneira como você usa esses operadores é adicionando-os ao final do seu programa. Considere o seguinte exemplo:

echo"maketecheasier"> hello.txt

Eu instruí o programa echo a produzir a palavra “maketecheasier”, então adicionei o operador > e um nome de arquivo. Isso disse ao shell UNIX para escrever a saída no arquivo “hello.txt” em vez de imprimi-la na tela.

Arquivo de Saída do Terminal 08 Hello Txt

3. Tee

Além do redirecionamento de saída, você também pode salvar a saída de um comando do terminal usando um programa chamado tee. Este é um programa GNU que permite ler e escrever a partir da entrada padrão. Use este programa com pipes UNIX para escrever a saída de um comando em um arquivo.

Considere o seguinte exemplo:

echo"maketecheasier"|tee hello.txt

Arquivo de Saída do Terminal 09 Exemplo Tee

Aqui, em vez de usar o redirecionamento de saída, eu canalizei ( |) a saída para tee.

Nota: Um pipe pega a saída de um programa e a alimenta na entrada de outro. Isso permite que você conecte vários programas, desde que todos estejam usando entradas e saídas padrão.

Leia também: Como Corrigir o Problema de Não Conseguir Digitar no Terminal no Linux

4. Script

Outra maneira de extrair a saída do terminal é através do script, um programa embutido no Linux que grava tudo o que você digita no terminal, bem como sua saída.

Você pode usar o script para gravar o log da sua sessão de terminal em um formato de texto analisável. Isso é muito útil se você quiser enviar um log de erro online para obter suporte de outras pessoas.

Para usá-lo, execute o seguinte comando:

script filename.txt

Arquivo de Saída do Terminal 11 Exemplo de Início do Script

Isso iniciará um ambiente de script onde você pode começar a executar comandos. Uma coisa importante a notar, no entanto, é que o script captura tudo o que você faz nessa sessão. Considere o seguinte exemplo:

Script started on 2022-03-2718:02:29+08:00 [TERM="rxvt-unicode-256color"TTY="/dev/pts/2"COLUMNS="77"LINES="22"]  
[?2004h[[1;31m balaraw:[1;35m~ [0m]$ ls  
[?2004l  
[0m[01;34mDesktop[0m    [01;34mDownloads[0m  [01;34mmail[0m  [01;34mNews[0m  [01;34mpods[0m  [01;34mdocuments[0m  [00;32mhello.txt[0m  [01;34mMail[0m  [01;34mpics[0m  [01;34mtmp[0m   [01;34mvids[0m  
[?2004h[[1;31m balaraw:[1;35m~ [0m]$ exit  
[?2004l  
exit  
  
Script done on 2022-03-2718:03:19+08:00 [COMMAND_EXIT_CODE="0"]

O script inclui todas as teclas pressionadas e caracteres de controle que você pressionou. No meu caso, incluiu todas as teclas “invisíveis” que pressionei, incluindo Tab e Backspace.

Uma vez que você tenha terminado a sessão, digite exit. Isso encerrará o programa Script e gravará todo o log no arquivo que você especificou.

Arquivo de Saída do Terminal 12 Script Cat

Leia também: Como Usar o Comando lp no Linux para Imprimir Arquivos do Terminal

5. Captura de Framebuffer do Terminal

Por último, você também pode obter a saída do terminal puxando do framebuffer do Linux. Isso é útil se você estiver trabalhando diretamente em um teletipo e quiser capturar a saída de um programa.

Para capturar o dispositivo framebuffer, execute o seguinte comando enquanto estiver no teletipo:

cat/dev/fb0 > capture.raw

Arquivo de Saída do Terminal 13 Captura Framebuffer Raw

Uma coisa importante a notar é que capturar o dispositivo framebuffer dessa maneira significa que você está despejando os bytes brutos do framebuffer em um arquivo. Para visualizar esse arquivo, você precisa carregá-lo em um editor de imagens e ajustar manualmente a cor e a profundidade de bits. Não apenas esse processo é demorado, mas também é fácil de fazer errado.

Assim, uma maneira de lidar com isso é usando um programa de terceiros, como fbgrab. Isso irá capturar a tela atual do teletipo do dispositivo framebuffer e despejá-la em um arquivo PPM ou PNG.

Instalar o fbgrab também é relativamente simples. Em distribuições baseadas em Debian e Ubuntu, você pode usar o apt:

sudo apt install fbgrab

Para Arch Linux, execute pacman:

sudo pacman -S fbgrab

Arquivo de Saída do Terminal 14 Instalando Fbcat

Usando fbgrab para Capturar a Saída do Terminal

Uma vez instalado, acesse o teletipo pressionando Control + Shift + Alt + F3, e então execute fbcat ou fbgrab.

Fbcat é um programa mais simples que captura a tela atual do framebuffer e a salva em uma imagem PPM. Este é um formato de imagem bruta de baixo nível que você pode carregar em um editor de imagens para converter em PNG. Fbcat é principalmente útil se você estiver tentando capturar uma exibição de menor profundidade de bits que requer um formato de imagem bruta para capturar corretamente.

Para capturar usando o programa fbcat, execute o seguinte comando:

fbcat > capture.ppm

Arquivo de Saída do Terminal 15 Captura Ppm

Isso irá capturar a tela exibida atualmente e despejar o conteúdo em um arquivo capture.ppm.

Fbgrab, por outro lado, é um programa mais complexo projetado para capturar exibições de maior profundidade de bits. Na maior parte, você o usará para capturar a tela do seu teletipo. Ele suporta salvar em PNG por padrão e tem a opção de selecionar um teletipo diferente para capturar.

Para capturar usando o programa fbgrab, execute o seguinte comando:

sudo fbgrab -c3 capture.png

Arquivo de Saída do Terminal 16 Exemplo Fbgrab

Isso irá capturar a terceira tela do teletipo e salvá-la em um arquivo capture.png.

Se você está procurando mais guias para o terminal Linux, confira aquele que discute como enviar um e-mail a partir da linha de comando.

Perguntas Frequentes

1. Ajuda! Fbgrab não funciona; a imagem está apenas preta ou em branco.

Isso provavelmente acontece porque o fbgrab está usando um dispositivo framebuffer diferente para capturar a saída do terminal. Verifique o dispositivo framebuffer atual que o sistema está usando listando a pasta “/dev”.

ls/dev

A partir daí, procure um dispositivo “/dev/fbX”. Normalmente, o Linux usa “/dev/fb0” para seu framebuffer. No entanto, se seu sistema estiver usando um framebuffer diferente, como “/dev/fb1”, você pode passar o seguinte comando para informar ao fbgrab para puxar daquele framebuffer em vez disso:

fbgrab -d1 capture.png

2. É possível capturar o conteúdo de um arquivo que escrevi como entrada para um programa?

Sim! Além dos três operadores discutidos acima, você também pode usar o operador < para puxar dados de um arquivo. O shell, então, tratará isso como uma entrada para um programa.

Fazendo dessa maneira também elimina a necessidade de depender de outros programas para imprimir o texto para você. Considere os seguintes exemplos:

[1]cat test.txt | program  
[2] program < test.txt
  • O primeiro exemplo chama o programa cat para carregar o texto, então carrega um operador pipe com a saída do cat e canaliza para o seu programa.
  • Por outro lado, o segundo exemplo chama imediatamente seu programa, então escolhe o operador <, que trata o próximo argumento como sua entrada.

3. Existe uma maneira de forçar o script a capturar apenas a saída de um comando?

Sim, é possível fazer o script capturar apenas um único comando. Isso é muito útil durante a solução de problemas quando você só quer capturar a saída de um único programa. Faça isso executando o seguinte comando:

script -c"seu-comando" test.txt

A flag -c informa ao programa script para executar apenas o programa: seu-comando. A partir daí, ele gravará sua saída em um arquivo de texto chamado test.txt.

Crédito da imagem: Unsplash