すべてのターミナルセッションを自動的に記録するにはどうすればよいですか?

すべてのターミナルセッションを自動的に記録するにはどうすればよいですか?

私は、一般的な管理上の理由から、また時には包括的な学習/復習のために、学習ツールとして、 xterm (つまり/ ) セッションを記録および確認するために、、、historyなどのツールを使用するのが好きです。scriptasciinemabashsh

  • $SHELL次のように、上記のツールやコマンドへの直接パスをデフォルトとして設定することを考えました。

    • /bin/script transcript.log;
    • /bin/asciinema rec -w0.5 term_log.json;
  • ただし、これらのツールは通常、デフォルト$SHELLセット ( /bin/bash、、/bin/shなど/bin/zsh) があることを前提としています。

  • $SHELLまた、システム変数 (つまり、、など)を再定義したり、config ( ) およびドット ( / ) ファイル$TERMを使用して動作させようとすると、さまざまな穴や潜在的な問題が発生するように感じます。*.conf~/.bashrc~/.bash_profile

  • しかし、セッションの記録が必要だと決めたり、気付いたりするのは、事後だったり、すでに興味深い部分の半分が終わっていたり、そういったシナリオだったりします。

すべて (できればstdinstdout(およびstderr該当する場合) など) を自動的にログに記録するように設定するための正しい方法、またはベスト プラクティスは何ですか?

答え1

.bash_profileまたはに次のような内容が記述.bashrcされていると効果的かもしれません:

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

関連情報