我在$PROMPT_COMMAND
中使用了一些魔法来自动保存我运行的每个命令到数据库:
PROMPT_COMMAND='save_command "$(history 1)"'
其中save_command
是一个更复杂的功能。保存每个命令输出的head
/ tail
会很好,但我想不出一个合理的方法来做到这一点,除了手动预先添加某种shell函数我输入的所有内容(使用复杂的管道或布尔表达式会变得更加痛苦)。基本上,我只想将前往/dev/tty
的第一行和最后10行保存到变量(甚至是文件) - 有什么方法可以做到这一点吗?
答案 0 :(得分:2)
脚本(1)可能会让你入门。它不会让你只记录第一行和最后10行,但你可以对其输出进行一些后处理。
答案 1 :(得分:2)
bash | tee /dev/tty ./bashout
这会将所有stdout保存到bashout。
bash | tee /dev/tty | tail > ./bashout
每个命令的stdout的尾部都被写入bashout。
bash | tee /dev/tty | sed -e :a -e '10p;$q;N;11,$D;ba' > ./bashout
每个命令的第一行和最后一行stdout都写入bashout。
这些不保存命令,但是如果修改save_command将命令打印到stdout,它就会进入。