我想保留我在 bash 上执行的所有操作及其输出的历史记录。
我需要创建一个可以存储的数据库
- 命令
- 路径(在命令时)
- 命令开始时间
- 命令结束时间
- 命令的输出
我可以使用以下代码将这些变量自动附加到 CSV 文件中吗?bash 命令或 python 脚本
目的:研究模式并优化重复命令,并在编写/测试代码时查看学习曲线
如果不能完全解决,请提供指导或伪代码
答案1
以下是我的做法:
创建一个 bash 脚本。使用此 bash 脚本记录并执行您的 bash 命令。例如,创建一个文件 log.sh,如下所示:
#!/bin/bash
LOGFILE=/path/to/your/logfile.log
touch $LOGFILE
exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3 RETURN
exec 1>>$LOGFILE 2>&1
echo "### log command ###"
echo "# start time: $(date)"
echo "# pwd: $(pwd)"
echo "# command: $@"
echo "# output: "
$@
echo "# end time: $(date)"
echo "###################"
exit 0
现在您可以像这样执行 bash 命令./log.sh df -h
。
它将创建一个日志文件,添加时间注释和重定向所有 stdout 和 stderr对于您向该文件输入的命令。
稍后您可以解析日志文件并从中创建数据库。