bashhistory > history_commands.txt
这将把当前用户的命令历史记录导出到history_commands.txt
文件中,导出的文件默认保存在当前工作目录(即运行该命令时所在的目录)。
bash# 导出最近的 50 条命令
history 50 > history_last_50_commands.txt
默认情况下,history
不显示命令执行的时间,但你可以修改HISTTIMEFORMAT
变量来显示时间:
bashHISTTIMEFORMAT="%F %T " # 设置时间格式(年-月-日 时:分:秒)
history > history_with_timestamp.txt
或者直接运行:
bashhistory | awk '{$1=""; print strftime("%Y-%m-%d %H:%M:%S"), $0}' > history_with_timestamp.txt
~/.bash_history
文件导出Bash 的历史命令默认保存在 ~/.bash_history 文件中,可以直接复制:
bashcp ~/.bash_history history_backup.txt
或者:
bashcat ~/.bash_history > history_backup.txt
如果是 root 用户,可以查看其他用户的历史记录:
bashsudo cat /home/username/.bash_history > other_user_history.txt
(替换username
为目标用户名)
script
命令记录会话如果你想实时记录所有终端输入的命令(包括输出),可以使用script
:
bashscript -a terminal_session.log
之后所有操作都会被记录到terminal_session.log
中,按Ctrl+D
退出记录。
history
只显示当前会话的命令,而~/.bash_history
存储的是之前会话的历史记录。history -c
),可能无法恢复,除非提前备份。zsh
中,历史记录默认存储在~/.zsh_history
,导出方式类似:bashhistory -c
仅清除当前终端会话的历史记录,重新登录后会恢复(因为.bash_history
文件未删除)。
bashhistory -c && history -w
history -c
:清除内存中的历史记录。history -w
:将空历史记录写入~/.bash_history
文件,使其永久生效。.bash_history
文件bashrm ~/.bash_history
或清空文件内容:
bash> ~/.bash_history
这会彻底删除所有历史命令记录,新记录会在新会话中重新生成。
bashunset HISTFILE
或
bashexport HISTFILE=/dev/null
如此当前会话的命令不会被保存到历史记录。
history -d
删除指定行bash# 查看历史记录
history
# 找到要删除的命令行号(如 10),执行指令删除指定行
history -d 10
仅删除单条记录,不影响其他历史命令。
bash# 查找包含关键词的命令
history | grep "keyword"
# 删除指定行
history -d <行号>
或批量删除:
bashfor i in $(history | grep "keyword" | awk '{print $1}'); do history -d $i; done
如果想完全禁用 Bash 历史记录,可以修改~/.bashrc
:
bashecho "unset HISTFILE" >> ~/.bashrc
source ~/.bashrc
或设置 HISTSIZE=0:
bashecho "HISTSIZE=0" >> ~/.bashrc
source ~/.bashrc
这样新命令都不会被记录。
在~/.bash_logout
中添加:
bashhistory -c
history -w
如此每次退出终端时都会自动清除历史记录。
在命令前加空格(需HISTCONTROL=ignorespace
已设置):
bash echo "这条命令不会被记录"
或临时禁用记录:
bashset +o history
<执行敏感命令>
set -o history
本文作者:哈希喵
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!