记录 Shell 活动

记录 Shell 活动

有没有办法在我的 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执行,这会产生如下行的输出。$HOMEusername

ls -la    Tue May 14 12:00:36 EDT 2019    /home/username

相关内容