Mostra o comando executado juntamente com a saída no arquivo de log

3

Existe uma maneira rápida e suja de não apenas registrar a saída de um arquivo shell, mas também os comandos usados dentro dele?

Por exemplo:

whoami > who.dmp

geraria um arquivo contendo algo como:

my_username

Para um arquivo de shell mais longo, qual é a maneira mais eficiente de exibir o comando que causou o resultado no arquivo de log também

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

Existe uma maneira de fazer isso sem codificar a exportação do comando no arquivo de saída todas as vezes?

    
por Brandon Kreisel 25.06.2012 / 20:54

2 respostas

7

Usar o shell set -x embutido é provavelmente a maneira barata e suja de fazer isso. Nos scripts de shell, você verá uma linha como:

#set -x

Que alguém deixou para trás apenas comentando. Eu acho que você poderia usar isso na linha de comando interativa, mas você pode não gostar do que faz lá.

    
por 25.06.2012 / 21:11
3

Você pode examinar a ferramenta script , que salvará a sessão de terminal inteira até sair do programa que você chama (que, por padrão, seria um shell). Exemplo de caso de uso:

~/:$ script test.output
Script started, output file is test.output
~/:$ mkdir example
~/:$ cd example
~/example/:$ touch new\ file.txt
~/example:/$ ls
new file.txt
~/example:/$ exit

O conteúdo do arquivo test.output seria então o seguinte:

Script started on Mon Jun 25 16:24:28 2012
~/:$ mkdir example
~/:$ cd example
~/example/:$ touch new\ file.txt
~/example/:$ ls
new file.txt
~/example/:$ exit

Script done on Mon Jun 25 16:24:41 2012

Esteja ciente de que este arquivo é uma transcrição de terminal completa , portanto, qualquer backspaces será exibido como ^H ou ^? (ou seja qual for o backspace do seu terminal).     
por 26.06.2012 / 01:28