有没有办法在我的 BASH shell 中生成自定义活动日志?它将在每一行中保存最后一个命令、运行时间以及运行的工作目录。
注意:它不需要使用exec
,但我没有 shell 的 root 访问权限,我的想法是限制人们应该假设我可以使用的数量。我建议执行,因为它感觉是一个很好的解决方案。
答案1
人们可以PROMPT_COMMAND
按如下方式或通过多种其他方式来实现这一目标。
export PROMPT_COMMAND='echo -e $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//")\\t$(date)\\t$(pwd) >> $HOME/history.csv'
该文件可以作为带有自定义字段分隔符 ( ) 的 CSV 文件打开TAB。该字符是通过切换到“启用反斜杠转义解释”的-e
内置命令来生成的。echo
$(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//")
:在 Linux 中,获取最后一个不带命令号且不带命令号周围空格的命令。$(date)
:获取当前日期和时间。$(pwd)
:获取当前工作目录。>> $HOME/history.csv
:将 (>>
) 输出追加到文件中。
如果从(of )ls -la
执行,这会产生如下行的输出。$HOME
username
ls -la Tue May 14 12:00:36 EDT 2019 /home/username