Linux下History命令说明

一.命令说明
history命令为bash自带的命令,用户可以通过此命令来查看和管理此用户执行过的命令。每个会话登陆的时候会将HISTFILE中的命令历史记录加载到内存中,每个会话退出时会将内存中的历史记录刷入HISTFILE使用方式后续依次进行说明:

二.使用说明
history [n]
数字n表示查看 最新的n条历史命令(总共行数为HISTSIZE变量控制,10000000都可以的)。如果不指定行数则显示当前会话缓存的所有

history -c
将加载在当前shell内存中命令历史记录清理,同样会等到登出的时候才会写到HISTFILE中。

history -d N
将内存中数字N指定的行数的命令记录删除。

history -anrw [filename]
[filename]:修改默认的HISTFILE,默认为环境变量HISTFILE所对应的名字;
-a:将内存中的命令append到HISTFILE对应的文件;
-r:将HISTFILE中的历史记录加载到当前shell会话并作为历史记录;
-w:将当前会话中的命令历史记录重写到HISTFILE( 覆盖原有记录);
-n:将当前会话启动后HISTFILE中新生成的记录加载到当前会话内存中;

history -ps arg [arg...]
-p:将多个arg分行打印出来,但是不会写入到history内存记录;
-s:将多个arg分行写入到history 内存记录

三.相关环境变量
可以将以下环境变量设置到/etc/bashrc中,每个会话登陆的时候都会自动加载。(bashrc中设置这些变量时直接写Var=Content就行,无需写export)

HISTIGNORE(hist-ignore):忽略掉常用的命令(alias),不将他们记录到日志中,冒号为分隔符。
HISTIGNORE="ls *:ll:ls:l:ll *:freq*:cd *:*.log:dl:dc:des:bi:pic:sublime:brackets:open*"

HISTSIZE:表示最多可以存多少条命令(先进先出),可以在/etc/bashrc和~/.bash_profile里面设置(1000000不会报错)。

HISTFILESIZE:表示文件的最大大小,默认也是1000,可以自行设置;

HISTTIMEFORMAT(hist-time-format):记录命令执行的时间格式(存到HISTFILE的为%s的格式),如果不设置此变量HISTFILE文件中将不会记录命令执行的时间戳;
HISTTIMEFORMAT="%F_%T"

HISTFILE:设置历史文件名,默认为~/.bash_history,如果想要另外指定地方可以手工设置;
HISTFILE="/home/$USER/test_2015

四.使用技巧
1.每次条命令执行完后立即写入HISTFILE,无需等待退出会话。可以在bashrc中加入以下内容(PROMPT_COMMAND即命令行提示符):
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"

2.为防止会话退出时覆盖其他会话写到HISTFILE的内容,可以在/etc/bashrc中加入以下内容:
shopt -s histappend

3.执行历史命令:
!N:查看并运行第N条命令;
!!:查看并运行上一条命令;
!STR:查看以STR打头的命令

五.使用案例
1.在/etc/bashrc中加入以下内容,每年将用户的命令历史保存到/ security/bash_history/$USER下:
##for security log
UIP=`who am i|awk '{print $5}'`
SYEAR=`date +%Y`
shopt -s histappend
if [ -d /security/bash_history/$USER ] ; then
:
else
mkdir -p / security/bash_history/$USER
fi

if [ -e / security/bash_history/$USER/$USER_$SYEAR ] ; then
:
else
touch / security/bash_history/$USER/bashhistory_$SYEAR
fi
HISTFILE="/ security/bash_history/$USER/bashhistory_$SYEAR"
HISTSIZE=100000000
HISTFILESIZE=100000000
HISTTIMEFORMAT="%F_%T  "

PROMPT_COMMAND="history -a;$PROMPT_COMMAND"


其实,我的初衷是想记录每个会话:执行时间 登陆IP及登录名 所执行的命令。如果哪位大神有好的建议请不吝提出,谢谢!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值