Terminal Output File 00 Featured Image

Cómo guardar la salida de la terminal en un archivo en Linux

La terminal es el corazón de un sistema Linux. Todos los programas que se ejecutan en Linux se ejecutan debajo de una línea de comando de terminal. Esto incluye programas masivos, como navegadores web e incluso programas simples como editores de texto. Por lo tanto, poder usar correctamente la terminal es un paso importante si desea comprender cómo funciona el sistema operativo.

Con eso, mientras trabaja en la terminal de Linux, es posible que desee guardar la salida de la terminal de un comando en un archivo. Este archivo se puede utilizar como información para otra operación o simplemente para registrar la actividad del terminal. Este artículo enseña cinco formas de guardar la salida del terminal en un archivo.

1. Usa Terminales Específicos

La primera forma de lidiar con esto es usar una Terminal que admita guardar la salida en un archivo. por ejemplo, el consola El terminal que viene con una instalación estándar de KDE incluye una opción para escribir la salida en un archivo.

Para hacer eso, presione el botón «Archivo» en la barra de menú y haga clic en «Guardar salida como…»

Archivo de salida de terminal 05 Konsole Guardar salida como

Esto abrirá una ventana de diálogo donde puede guardar la salida del terminal. Desde allí, puede elegir dónde desea guardar el archivo.

También puede guardar la salida de un comando en la terminal de GNOME. Simplemente haga clic derecho en el terminal y presione «Copiar salida como HTML». Esto, entonces, cargará el texto del terminal en su portapapeles. Desde allí, puede pegarlo en cualquier editor de texto.

Archivo de salida de terminal 06 Gnome Copy Output Html

2. Redirección de salida

Otra forma de lidiar con esto es usar el operadores incorporados del shell UNIX. Estas son funciones predeterminadas en Linux y pueden redirigir la salida de texto de un programa a un archivo. Hay tres operadores que pueden hacerlo:

  • los > El operador creará o reemplazará el contenido de un archivo con la salida de su programa. Esto es útil si desea volcar y ver el resultado actual de su programa en el mismo archivo.
  • los >> El operador también creará un archivo con la salida de su programa. Sin embargo, este operador solo agregará la salida en lugar de reemplazarla. Esto es útil si desea volcar el resultado de su programa continuamente en un solo archivo.
  • Por último, el 2> operator es un tipo especial de operador que imprimirá errores que serán informados. Esto es muy útil durante la depuración, ya que muestra el problema que encontró el programa antes de bloquearse.

Ejemplo de redirección de archivo de salida de terminal 07

Sabiendo eso, la forma en que usa estos operadores es agregándolos al final de su programa. Considere el siguiente ejemplo:

echo "expertogeek" > hello.txt

instruí al echo programa para generar la palabra «expertogeek», luego agregó el > operador, así como un nombre de archivo. Esto le dijo al shell de UNIX que escribiera el resultado en el archivo «hello.txt» en lugar de imprimirlo en la pantalla.

Archivo de salida de terminal 08 Hello Txt

3. camiseta

Aparte de la redirección de salida, también puede guardar la salida de un comando de terminal usando un programa llamado tee. Este es un programa GNU que le permite leer y escribir en la entrada estándar. Utilice este programa con conductos UNIX para escribir la salida de un comando en un archivo.

Considere el siguiente ejemplo:

echo "expertogeek" | tee hello.txt

Archivo de salida de terminal 09 Ejemplo en T

Aquí, en lugar de usar la redirección de salida, canalicé (|) la salida a tee.

Nota: Una tubería toma la salida de un programa y la alimenta a la entrada de otro. Esto le permite unir varios programas, siempre que todos usen entradas y salidas estándar.

4. Guión

Otra forma de extraer la salida de la terminal es a través de scriptun programa integrado de Linux que registra todo lo que escribe en la terminal, así como su salida.

Puede usar un script para registrar el registro de su sesión de terminal en un formato de texto analizable. Esto es muy útil si desea enviar un registro de errores en línea para obtener asistencia de otras personas.

Para usarlo, ejecute el siguiente comando:

Archivo de salida de terminal 11 Ejemplo de secuencia de comandos de inicio

Esto iniciará un entorno de secuencias de comandos donde puede comenzar a ejecutar comandos. Sin embargo, una cosa importante a tener en cuenta es que el script captura todo lo que hace en esa sesión. Considere el siguiente ejemplo:

Script started on 2022-03-27 18: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-27 18:03:19+08:00 [COMMAND_EXIT_CODE="0"]

El script incluye todas las pulsaciones de teclas y los caracteres de control que pulsa. En mi caso, incluía todas las teclas «invisibles» que presioné, incluidas las teclas Tabulador y Retroceso.

Una vez que haya terminado con la sesión, escriba exit. Esto finalizará el programa Script y escribirá todo el registro en el archivo que especificó.

Archivo de salida de terminal 12 Script Cat

5. Captura de Terminal de Framebuffer

Por último, también puede obtener la salida de la terminal tirando de la búfer de cuadros de Linux. Esto es útil si está trabajando directamente en un teletipo y desea capturar la salida de un programa.

Para capturar el dispositivo framebuffer, ejecute el siguiente comando mientras está en el teletipo:

cat /dev/fb0 > capture.raw

Archivo de salida de terminal 13 Capture Framebuffer Raw

Una cosa importante a tener en cuenta es que capturar el dispositivo framebuffer de esta manera significa que está volcando los bytes sin procesar del framebuffer en un archivo. Para ver ese archivo, debe cargarlo en un editor de imágenes y ajustar manualmente el color y la profundidad de bits. Este proceso no solo lleva mucho tiempo, sino que también es fácil hacerlo mal.

Como tal, una forma de lidiar con esto es usar un programa de terceros, como fbgrab. Esto tomará la pantalla de teletipo actual del dispositivo framebuffer y la volcará en un archivo PPM o PNG.

Instalar fbgrab también es relativamente sencillo. En las distribuciones basadas en Debian y Ubuntu, puede usar apt:

Para Arch Linux, ejecute pacman:

Archivo de salida de terminal 14 Instalación de Fbcat

Uso de fbgrab para capturar la salida del terminal

Una vez instalado, acceda al teletipo presionando Control + Shift + Alt + F3, luego ejecute fbcat o fbgrab.

Fbcat es un programa más simple que toma la pantalla de framebuffer actual y la guarda en una imagen PPM. Este es un formato de imagen sin procesar de bajo nivel que puede cargar en un editor de imágenes para convertirlo a PNG. Fbcat es principalmente útil si está tratando de capturar una pantalla de menor profundidad de bits que requiere un formato de imagen sin formato para capturar correctamente.

Para capturar usando el programa fbcat, ejecute el siguiente comando:

Archivo de salida de terminal 15 captura ppm

Esto tomará la pantalla que se muestra actualmente y volcará el contenido en un archivo capture.ppm.

Fbgrab, por otro lado, es un programa más complejo diseñado para capturar pantallas de mayor profundidad de bits. En su mayor parte, lo usará para capturar la pantalla de su teletipo. Admite guardar en PNG de forma predeterminada y tiene la opción de seleccionar un teletipo diferente para capturar.

Para capturar usando el programa fbgrab, ejecute el siguiente comando:

sudo fbgrab -c 3 capture.png

Archivo de salida de terminal 16 Ejemplo de Fbgrab

Esto tomará la pantalla del tercer teletipo y la guardará en un archivo capture.png.

Si está buscando más guías para la terminal de Linux, consulte la que trata sobre el envío de un correo electrónico desde la línea de comandos.

Preguntas frecuentes

1. ¡Ayuda! Fbgrab no funciona; la imagen es solo negra o en blanco.

Esto probablemente se deba a que fbgrab está usando un dispositivo framebuffer diferente para capturar la salida del terminal. Compruebe el dispositivo framebuffer actual que utiliza el sistema enumerando la carpeta «/dev».

A partir de ahí, busque un dispositivo «/dev/fbX». Normalmente, Linux usa «/dev/fb0» para su framebuffer. Sin embargo, si su sistema está usando un framebuffer diferente, como “/dev/fb1”, puede pasar el siguiente comando para decirle a fbgrab que extraiga de ese framebuffer en su lugar:

2. ¿Es posible capturar el contenido de un archivo que escribí como entrada a un programa?

¡Sí! Además de los tres operadores discutidos anteriormente, también puede usar el < operador para extraer datos de un archivo. Entonces, el shell tratará esto como una entrada para un programa.

Hacerlo de esta manera también elimina la necesidad de depender de otros programas para imprimir el texto por usted. Considere los siguientes ejemplos:

[1] cat test.txt | program
[2] program < test.txt
  • El primer ejemplo llama al programa cat para cargar el texto, luego carga un operador de canalización con la salida de cat y lo canaliza a su programa.
  • Por otro lado, el segundo ejemplo llama inmediatamente a su programa, luego selecciona el < operador, que trata el siguiente argumento como su entrada.

3. ¿Hay alguna forma de obligar a la secuencia de comandos a capturar solo la salida de un comando?

Sí, solo es posible crear scripts para un solo comando. Esto es muy útil durante la resolución de problemas cuando solo desea capturar la salida de un solo programa. Haga esto ejecutando el siguiente comando:

script -c "your-command" test.txt

los -C flag le dice al programa script que solo ejecute el programa: your-command. A partir de ahí, escribirá su salida en un archivo de texto llamado test.txt.

Credito de imagen: Unsplash

Experto Geek - Tu Guía en Tendencias Tecnológicas