¿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 -x
es 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 script
herramienta, 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.output
serí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/:$ salirTenga en cuenta que este archivo es uncompletotranscripción del terminal, por lo que cualquier retroceso se mostrará comoGuión realizado el lunes 25 de junio a las 16:24:41 de 2012.
^H
o ^?
(o cualquiera que sea el retroceso de su terminal).