有没有办法保留命令历史记录并按命令对其进行搜索或分组?
换句话说,我想列出过去 3 个月内我执行过的每个 grep 命令。这种能力是否可能以某种方式实现?
答案1
假设您使用的是最常见的 shell bash
history
将显示存储在 .bash_history 文件中的历史记录。您可以通过添加来增加历史记录的大小并添加日期
HISTSIZE=1000
HISTTIMEFORMAT="%Y/%m/%d %T "
到您的 .bashrc 文件。然后你可以
history | grep " 2019/0[1-3]"
请注意,bash 仅保留交互式会话中所选命令的历史记录。如果您想跟踪所有内容,建议使用自定义 shell 包装器、远程日志记录和整个系统的版本控制。
答案2
为了完成每个命令,我不会依赖 bash 历史记录,原因有几个。您可以将此类命令发送到系统日志服务/守护程序。
我曾经在安全的中央系统日志服务器中积压了 200 多台 Debian 服务器中执行的 1 年多的命令日志。
/etc/bash.bashrc
我使用了一个简单的“技巧”来为所有用户添加或添加。 bash_profile 仅适用于您的用户以下行:
readonly PROMPT_COMMAND='history -a >(logger -t "cmdline $USER[$PWD] $SSH_TTY $SSH_CONNECTION")'