history命令的功能是显示使用过的命令,并为其编号。下面几条命令是history的不同操作:
history n 显示最近使用过的n条命令。
history -c 将当前shell中历史清空。
history -d 801 删除编号为801的命令。
history -a 追加最新一条命令到历史文件中。
history -n 显示还没有从历史文件中读取的历史记录。
history -r 将历史文件中的记录作为当前shell的历史记录。
history -w 将当前记录写入历史文件中,覆盖原内容。
系统默认的history命令难以满足我们的需求,我们可以通过修改/etc/profile文件来对hostory命令的
显示效果进行修改:
(1)显示命令执行的时间
在/etc/profile文件的末尾添加:export HISTTIMEFORMAT="%F %T `whoami` :"(注意:这里whoami两边符号不是单引号,而是Tab键上面那个键的符号,就是~下面的那个符号。)
(2)显示执行命令的用户的源IP
首先通过命令获取登录源IP:USER_IP=`who -u am i 2>/dev/
null | awk ' {print &NF}' | sed -e ' s/[()]//g'`
if ["&USER_IP" = ""]
then
USER_IP=`hostname`
然后再export HISTTIMEFORMAT时,将USER_IP作为参量写入HISTTIMEFORMAT,
export HISTTIMEFORMAT="%F %T &USER_IP: `whoami` :"
综合以上技巧,我们可以得到以下脚本:
USER_IP=`who -u am i 2>/dev/null | awk '{print &NF}' |sed -e 's/[()]//g'`
if ["&USER_IP"=""]
then
USER_IP=`hostname`
fi
if [! -d /opt/history]
then
mkdir /opt/history
chmod 777 /opt/history
fi
if [! -d /opt/history/&{LOGNAME}]
then
mkdir /opt/history/&{LOGNAME}
chmod 300 /opt/history/&{LOGNAME}
fi
export HISTSIZE=4096
export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S]"
export HISTFILE=" /opt/history/${LOGNAME}.history"
chmod 600 /opt/history/*history* 2>/dev/null
将以上代码追加到/etc/profile文件末尾即可,然后重新登录,会发现history的显示格式和存储文件都发生率变化。