GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo limpiar la salida del comando 'script' de Linux

Si desea ver el archivo, puede enviar la salida a través de col -bp; esto interpreta los caracteres de control. Entonces puede canalizar menos, si lo desea.

col -bp typescript | less -R

En algunos sistemas col no aceptaría un argumento de nombre de archivo, use esta sintaxis en su lugar:

col -bp <typescript | less -R

cat typescript | perl -pe 's/\e([^\[\]]|\[.*?[a-zA-Z]|\].*?\a)//g' | col -b > typescript-processed

aquí hay alguna interpretación de la cadena de entrada a perl :

  • s/pattern//g significa hacer una sustitución en la totalidad (el g opción significa hacer todo en lugar de detenerse en el primer sustituto) cadena de entrada

aquí hay alguna interpretación del patrón de expresión regular:

  • \e haga coincidir el carácter de control especial de "escape" (ASCII 0x1A)
  • ( y ) son el principio y el final de un grupo
  • | significa que el grupo puede coincidir con uno de N patrones. donde están los N patrones
    • [^\[\]] o
    • \[.*?[a-zA-Z] o
    • \].*?\a
  • [^\[\]] significa
    • coincide con un conjunto de caracteres NOT donde los caracteres not son [ y ]
  • \[.*?[a-zA-Z] significa
    • coincide con una cadena que comienza con [ luego haz un .*? no codicioso hasta el primer carácter alfa
  • \].*?\a significa
    • coincide con una cadena que comienza con ] luego haz un .*? no codicioso hasta que presione el carácter de control especial llamado "el carácter de alerta (campana)"

Para una gran cantidad de script salida, piratearía un script de perl de forma iterativa. De lo contrario, edite a mano con un buen editor.

Es poco probable que exista un método automatizado para eliminar los caracteres de control de script salida de una manera que reproduzca lo que se mostró en la pantalla en ciertos momentos importantes (como cuando el host estaba esperando ese primero carácter de alguna entrada de usuario).

Por ejemplo, la pantalla puede estar en blanco a excepción de Andrew $ , si luego escribiste rm /* y presionó la tecla de retroceso doce veces (mucho más de lo necesario), lo que se muestra en la pantalla al final depende de qué shell se estaba ejecutando, cuál es su stty actual son las configuraciones (que puede cambiar a mitad de una sesión) y probablemente también algunos otros factores.

Lo anterior se aplica a cualquier método automatizado de captura continua de entrada y salida. La principal alternativa es tomar "capturas de pantalla" o cortar y pegar la pantalla en los momentos apropiados durante la sesión (que es lo que hago para las guías de usuario, notas para un registro diario, etc.).


Linux
  1. Cómo asignar la salida de un comando de Linux a una variable

  2. Cómo usar el comando Su en Linux

  3. ¿Cómo ejecutar el comando antes del inicio de sesión del usuario en Linux?

  4. ¿Cómo saber si la salida de un comando o script de Shell es Stdout o Stderr?

  5. ¿Cómo serializar la ejecución de comandos en Linux?

Cómo eliminar un directorio en Linux

Cómo usar el comando nohup de Linux

Cómo habilitar la marca de tiempo en la salida del comando de historial de Linux

Cómo ejecutar el comando / secuencia de comandos de Linux Shell en segundo plano

Cómo guardar la salida del comando de Linux en una imagen o un archivo de texto

Cómo almacenar un comando de Linux como una variable en el script de Shell