gpt4 book ai didi

linux - Bash 命令记录器

转载 作者:IT王子 更新时间:2023-10-29 01:05:08 27 4
gpt4 key购买 nike

出于好奇,我想知道是否可以编写一个 bash 脚本来记录在 Bash/SSH session 中运行的所有命令。我知道 history 应该记录所有运行的命令,但它似乎非常不可靠!

今天早上我一直在胡思乱想,想出了以下 bash 脚本,它记录了用户在终端中运行的内容,但没有正确运行所有命令。

prompt_read() {
echo -n “$(whoami)@$(hostname):$(pwd)~$ “
read userinput
}

prompt_read

while :; do
if [[ $userinput != exit ]]; then
logger "logit $userinput"
bash -c "$userinput"
prompt_read
else
kill -1 $PPID
fi
done

有没有人知道比 history

更好更可靠地记录命令的东西?

干杯

最佳答案

历史对你来说似乎不可靠的原因是因为它只在 BASH session 结束时写入历史,所以你可能会丢失命令。

我的 bash 配置文件中有一些内容:

HISTFILESIZE=10000 # how many lines of history to store in the history file

HISTSIZE=10000 # how many lines of history to store in a session ( I think )

HISTCONTROL=ignoredups # ignore duplicate commands

shopt -s histappend # append history, rather than having sessions obliterate existing history
PROMPT_COMMAND="history -a;$PROMPT_COMMAND"

最后几个是重要的,将您的PROMPT_COMMAND 设置为history -a 将使历史立即追加,而不是在 session 后追加。并且设置 shopt -s histappend 将使 bash session 附加到历史文件,而不是覆盖现有的历史。

更多信息:http://linuxcommando.blogspot.com/2007/11/keeping-command-history-across-multiple.html

此外,如果这对您有用,您可以使用 HISTFILE 环境变量更改用于特定 bash session 的历史文件的名称。

关于linux - Bash 命令记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7193441/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com