无法从bash脚本中保存历史记录

时间:2019-12-19 22:11:48

标签: linux bash shell

我正在编写一个简单的bash脚本,但是脚本中的命令没有任何作用。但是,当我将命令直接复制/粘贴到命令行时,它可以工作。

#!/bin/bash
today=$(date +%B-%A-%d-%Y)
expr='clear|ls|cd'
history | grep -v -E $expr > histor$today.txt
history -c

建议?

另一个问题:是否可以调用和执行命令行中的任何命令?

注意:我想创建一个脚本来保存我的命令历史记录,除了“ clear,ls,cd”命令,然后使用crontab定期保存它。

1 个答案:

答案 0 :(得分:2)

默认情况下,历史记录功能仅在交互式shell中启用,而在运行脚本的shell中未启用。你可以放

set -o history

在脚本的开头以启用历史记录。

此外,每个shell调用都有其自己的历史记录,它们在shell之间不共享。因此,在脚本中启用历史记录将使其无法访问交互式Shell的历史记录。因此,脚本会找到的唯一历史记录是set -o history之后在脚本中执行的命令。

您应该做的是在.bashrc中定义一个函数。

gethist() {
    history | grep -v -E 'clear|ls|cd' > $(date +'histor%B-%A-%d-%Y.txt')
}