我正在编写一个简单的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定期保存它。
答案 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')
}