2

linux之history命令

 1 year ago
source link: https://blog.51cto.com/u_12214037/5284544
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

显示或操作历史列表。

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

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

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'

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

> 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
微信公众号:入门小站

  • 回复【1001】获取 linux常用命令速查手册
  • 回复【10010】获取 阿里云ECS运维Linux系统诊断
  • 回复【10012】获取 Linux学习笔记【强悍总结值得一看】
  • 回复【10013】获取 shell简明教程

linux之history命令_Linux


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK