Meu objetivo é registrar toda a saída de um script em um diretório que o script criará.
Por exemplo, eu tenho:
~/.abc.sh
:
#! /bin/bash
rails new myapp
Quando eu corro ...
cd ~/code
. ~/.abc.sh
... que vai criar uma nova aplicação Rails no diretório ~/code/myapp
.
Quando o Rails está criando um aplicativo, ele gera um monte de texto que eu quero capturar e armazenar em um arquivo de log no mesmo diretório que o rails
comando recém-criado. Também quero exibir esse texto no terminal.
Como faço para fazer isso?
~/.abc.sh | tee <file>
? Nesse caso, o problema é que não sei em qual diretório o script criará o aplicativo quando o chamo. Como saberia o que dar nofile
argumento? (Graças para os grandes exemplos)mktemp
. Veja a página do manualman mktemp
.script
iniciará uma sessão interativa e registrará toda a saída (stdout / stderr etc) em um arquivo, ou (com o-c
parâmetro) executará um comando e registrará a saída dessa.Nota: em uma sessão interativa, você pode parar a gravação apenas saindo da sessão como faria normalmente (por exemplo,
exit
ou Ctrl-D).Para gravação de sessão com reprodução de vídeo, você também pode tentar o asciinema .
fonte