linux之history命令

举报
入门小站 发表于 2021/10/07 00:10:39 2021/10/07
【摘要】 显示或操作历史列表。 命令语法history [-c] [-d offset] [n]history -anrw [filename]history -ps arg [arg...] 命令功能显示历史列表。操作历史列表。 命令选项-a 将当前内存的历史记录追加(append)到历史文件中-n 从历史文件中读取当前内存记录里未读取的行输出-r 从历史文件中读取所有记录附加到内存历史记录-...

显示或操作历史列表。

命令语法

history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]

命令功能

  • 显示历史列表。

  • 操作历史列表。

命令选项

-a  将当前内存的历史记录追加(append)到历史文件中
-n  从历史文件中读取当前内存记录里未读取的行输出
-r  从历史文件中读取所有记录附加到内存历史记录
-w 从内存历史中读取数据覆盖到历史记录文件中,可以指定文件保存记录
-p  将参数输出为列表,但不保存
-s  将参数保存成命令历史记录中,可以以此伪造命令记录

命令参数

  • n:可选,只列出最近的 n 条记录。

  • filename:可选,表示历史文件;默认调用顺序为filename、环境变量HISTFILE~/.bash_history

返回值

返回成功,除非提供了非法选项或出现了错误。

使用 history 命令显示最近使用的 10 条历史命令

> history 10

清空历史记录

> history -c

通过修改环境变量来控制history的保存属性

  • $HISTSIZE 历史记录最大条数
  • $HISTFILE 历史记录存放文件
  • $HISTFILESIZE 历史文件条目最大数
  • $HISTTIMEFORMAT="%F %T" 在命令历史显示时输出时间等格式
  • $HISTIGNORE="str1;str2;str3*" 表示不记录str1、str2命令和以str3开头的命令

一般在/etc/bashrc中定义这些变量

> vim /etc/bashrc
export HISTTIMEFORMAT='%F %T ' #让历史命令记录操作时间
export HISTSIZE=1000000 #设置保存历史命令条数
export HISTFILESIZE=1000000 #设置保存历史命令的文件大小
shopt -s histappend #多个终端同时操作时,避免命令覆盖,采用追加方式
PROMPT_COMMAND='history -a' #实时记录历史命令,防止丢失

> source /etc/bashrc

把操作过的命令保存到文件

方法1

vim /etc/bashrc
export HISTORY_FILE=/var/.history/date +'%y-%m-%d'.log #自定义历史命令保存文件
export PROMPT_COMMAND=' { date "+%Y-%m-%d %T - USER:$USER IP:$SSH_CLIENT PS:$SSH_TTY - $(history 1 | { read x cmd; echo "$cmd"; })"; } >> $HISTORY_FILE'

实时记录历史命令到自定义文件中,不记录日志文件中

方法2

> vim /etc/bashrc
export PROMPT_COMMAND='history -a { command=$(history 1 | { read x y;echo $y; } );logger -p local1.notice -t bash -i "user=$USER,ppid=$PPID,from=$SSH_CLIENT,pwd=$PWD,command:$command " }'

> vim /etc/syslog.conf
local1.notice /var/log/cmd.log

记录到日志中,配合日志服务器,可把日志传送过去,安全性高

PROMPT_COMMANDbash的环境变量,这个变量的中内容是作为一个普通的bash命令执行的,而且执行时间是在bash显示prompt(命令行前缀提示符)之前。 这个好理解,就是说每执行一个命令前,PROMPT_COMMAND里面先执行,然后是prompt(命令行前缀提示符)

原文链接:https://rumenz.com/rumenbiji/linux-history.html
微信公众号:入门小站

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200