como posso gravar automaticamente todas as sessões do terminal?

como posso gravar automaticamente todas as sessões do terminal?

Gosto de usar ferramentas como history, scripte asciinemapara registrar e revisar sessões xterm (ou seja, bash/ sh) por motivos típicos de administração geral e também, às vezes, para estudo/revisão abrangente; como ferramenta de aprendizagem.

  • Pensei em definir o padrão $SHELLcomo um caminho direto para essas ferramentas e/ou comandos, como:

    • /bin/script transcript.log;
    • /bin/asciinema rec -w0.5 term_log.json;
  • Mas essas ferramentas normalmente dependem de um $SHELLconjunto padrão (ou seja /bin/bash, /bin/sh, /bin/zsh, etc.).

  • Além disso, sinto que redefinir variáveis ​​​​do sistema (por exemplo $SHELL, $TERM, etc.) ou tentar fazê-lo funcionar com arquivos de configuração ( *.conf) e ponto ( ~/.bashrc/ ~/.bash_profile) será repleto de todos os tipos de falhas e problemas potenciais.

  • No entanto, toda vez que decido ou percebo que quero a transcrição de uma sessão, é depois do fato, ou já estarei na metade da parte interessante, ou algum cenário desse tipo.

Qual é a prática correta ou recomendada para configurar algo assim para simplesmente registrar tudo (de preferência stdin( stdoute stderrquando aplicável), etc.) automaticamente?

Responder1

Algo assim no seu .bash_profileou .bashrcpode funcionar para você:

if test -t 0 -a -t 1 -a -z "$SCRIPTING"
then
    export SCRIPTING="$HOME/.script.$(date +%Y%m%d_%H%M%S).$$)"
    exec script "$SCRIPTING"
fi

informação relacionada