Mostrar el comando ejecutado junto con la salida en el archivo de registro

Mostrar el comando ejecutado junto con la salida en el archivo de registro

¿Existe una manera rápida y sucia de no solo registrar la salida de un archivo de shell sino también los comandos utilizados en su interior?

Por ejemplo:

whoami > who.dmp

generaría un archivo que contenía algo como:

my_username

Para un archivo de shell más largo, ¿cuál es la forma más eficaz de mostrar también el comando que provocó el resultado en el archivo de registro?

Ex:

log.txt
###############

echo whoami  <- I want this to show in the file as well
my_username

time   <- I want this to show in the file as well

real    0m0.00s
user    0m0.00s
sys     0m0.00s

¿Hay alguna manera de hacer esto sin codificar exportando el comando al archivo de salida cada vez?

Respuesta1

Usar el shell incorporado set -xes probablemente la forma más barata y sucia de hacer esto. En los scripts de shell, a menudo verás una línea como:

#set -x

Que alguien dejó atrás con solo comentarlo. Creo que podrías usarlo en la línea de comando interactiva, pero es posible que no te guste lo que hace allí.

Respuesta2

Podrías buscar en la scriptherramienta, que guardará toda la sesión del terminal hasta que salgas del programa al que llamas (que por defecto sería un shell). Caso de uso de ejemplo:

~/:$ prueba de script.salida
Script iniciado, el archivo de salida es test.output
~/:$ ejemplo de mkdir
~/:$ ejemplo de cd
~/ejemplo/:$ toque nuevo\ archivo.txt
~/ejemplo:/$ ls
nuevo archivo.txt
~/ejemplo:/$ salir

El contenido del archivo test.outputsería entonces el siguiente:

El guión comenzó el lunes 25 de junio a las 16:24:28 de 2012.
~/:$ ejemplo de mkdir
~/:$ ejemplo de cd
~/ejemplo/:$ toque nuevo\ archivo.txt
~/ejemplo/:$ ls
nuevo archivo.txt
~/ejemplo/:$ salir

Guión realizado el lunes 25 de junio a las 16:24:41 de 2012.

Tenga en cuenta que este archivo es uncompletotranscripción del terminal, por lo que cualquier retroceso se mostrará como ^Ho ^?(o cualquiera que sea el retroceso de su terminal).

información relacionada