我想花费一些磁盘空间记录终端会话的所有输入和输出;/usr/bin/script
似乎在这方面相当擅长。我想让所有新的 shell 会话(当前我使用的/bin/bash
)都可以在一个script
会话中启动,该会话通过名称记录到一个文件~/.log/$(date --iso-8601=second).log
我尝试过script
在 .bashrc 文件末尾调用,但回想起来它基本上崩溃了并且无法打开新的 shell。
关于保存此类记录的可能方法有什么想法吗?我已经有一个《永恒的狂欢历史》但仅仅知道输入对我来说并不总是足够的。
答案1
我不认为把它放在你的 rcfile 的底部会有多大作用 - 当script
加载一个新的 shell 时,你事先声明的所有状态都会被清除,直到它尝试永远加载rcfile等。我刚刚让它在我的终端上运行,如下所示:
$ x=;bash --rcfile /dev/fd/3 3<<\$x
export S_LOG=~/".log/$(date --iso-8601=second).log"
exec script -aeqfc "bash --rcfile /dev/fd/3 -i" "$S_LOG" \
3<<""
alias success='echo it worked'
PS1='script $ '
exec 3<&-
$x
script $ success
it worked
script $ cat "$S_LOG"
Script started on Mon Dec 14 15:43:28 2015
script $ success
it worked
script $ cat "$S_LOG"
script $
所以我认为你最好把它放在头你的 rc 文件,然后exec
一个新的 shell 来读取它的其余部分后您称之为新外壳的点。