如何将$ PWD的bash历史保存到$ PWD / .history中

时间:2016-07-09 14:25:10

标签: bash

我正在开发一个跟踪研究活动的开源项目。在其中一个模块中,我想跟踪文件夹的命令历史记录到文件(.history)中,该文件是同一个文件夹。

示例

比方说,我正在处理文件夹/Users/ravi/test-project/。 我使用少量命令在该文件夹中开始工作。假设我在文件夹中执行了以下命令。

$wget https://mywebsite.com/script.py
$chmod +xw script.py
$echo "append some text " >  script.py 
$python script.py

我希望将所有这些命令保存到文件夹的.history文件中,即。/Users/ravi/test-project/.history

非常感谢。提前谢谢。

1 个答案:

答案 0 :(得分:3)

这实际上非常简单:

PROMPT_COMMAND="history -a; history -c; history -r; HISTFILE=\${PWD}/.history"

首先确保history is written and then re-read on every prompt *。然后它更改历史文件变量以使用当前目录。示例会话:

$ echo "$PWD"
/home/username
$ cd /tmp
$ echo "$PWD"
/tmp
$ cat ~/.history 
echo "$PWD"
cd /tmp
$ cat .history
echo "$PWD"

如您所见,cd命令存储在执行命令的目录的历史文件中,echo命令存储在两个历史文件中。

需要注意的一个副作用是现在每个终端之间共享历史记录。我喜欢这个功能,但不是每个人都这样做。

此外,如果您正在寻找审核而不是历史的便利性,您应该考虑启用auditd或类似的东西。

*别担心,即使使用thousands of lines of history,它的速度也非常快。