Eu tenho um script bash que chama vários comandos e imprime alguma saÃda (tanto dos próprios comandos chamados, como git pull
, quanto de mensagens informativas geradas pelo próprio script, como Operation took XX minutes
.
Eu gostaria de capturar toda a saÃda para um arquivo do próprio script : basicamente, estou tentando evitar a necessidade de chamar ./myscript.sh | tee file.txt
por motivos não relevantes aqui .
Basicamente eu gostaria de fazer algo assim:
startCapture
git pull
echo "Text"
other-command
endCapture
Também exijo que a saÃda seja impressa em meu shell enquanto o script está em execução.
O objetivo final é:
- executar
./myscript.sh
sem construções de shell adicionais - veja a saÃda no terminal como eu faço agora
- obter um arquivo em disco com toda a saÃda
Isso é mesmo possÃvel?
Você sempre pode invocar
script
dentro de um script para registrar tudo.Como imprimir e registrar tudo ao mesmo tempo em um script bash para
log.txt
:Vendo o registro
log.txt
:Um método que encontrei para capturar toda a saÃda de qualquer sessão é iniciar uma nova sessão bash e tee para um arquivo de log. é realmente útil para rastrear mais do que apenas um script.
ou você pode apenas ver o script em si
./myscript.sh | tee ./myscript.log #this will log only the output of the script.
Você quer usar tee .
Ex:
Isso cria um arquivo out.txt com a saÃda do comando e o imprime na tela. Use "tee -a filename" se quiser anexar ao arquivo.
out.txt terá duas linhas Hello e World (sem -a teria apenas world)
Se você quiser salvar o script inteiro e gerar o script inteiro: