Existe uma maneira rápida e suja de registrar não apenas a saída de um arquivo shell, mas também os comandos usados dentro dele?
Por exemplo:
whoami > who.dmp
geraria um arquivo que continha algo como:
my_username
Para um arquivo shell mais longo, qual é a maneira mais eficaz de exibir o comando que causou o resultado também no arquivo de log
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 para o arquivo de saída todas as vezes?
Responder1
Usar o shell integrado set -x
é provavelmente a maneira barata e suja de fazer isso. Em scripts de shell, você verá frequentemente uma linha como:
#set -x
Que alguém deixou para trás apenas comentando. Acho que você poderia usar isso na linha de comando interativa, mas pode não gostar do que faz lá.
Responder2
Você pode dar uma olhada na script
ferramenta, que salvará toda a sessão do terminal até você sair do programa que você chamou (que por padrão seria um shell). Exemplo de caso de uso:
~/:$ script teste.saída Script iniciado, arquivo de saída é test.output ~/:$ exemplo mkdir ~/:$ exemplo de cd ~/exemplo/:$ toque novo\ arquivo.txt ~/exemplo:/$ ls novo arquivo.txt ~/exemplo:/$ saída
O conteúdo do arquivo test.output
seria então o seguinte:
O roteiro começou em segunda-feira, 25 de junho, 16:24:28 de 2012 ~/:$ exemplo mkdir ~/:$ exemplo de cd ~/exemplo/:$ toque novo\ arquivo.txt ~/exemplo/:$ ls novo arquivo.txt ~/exemplo/:$ saídaEsteja ciente de que este arquivo é umcompletotranscrição do terminal, portanto, qualquer backspace aparecerá comoRoteiro feito em segunda-feira, 25 de junho 16:24:41 2012
^H
ou ^?
(ou qualquer que seja o backspace do seu terminal).