显示或操作历史列表。
history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]
-a 将当前内存的历史记录追加(append)到历史文件中
-n 从历史文件中读取当前内存记录里未读取的行输出
-r 从历史文件中读取所有记录附加到内存历史记录
-w 从内存历史中读取数据覆盖到历史记录文件中,可以指定文件保存记录
-p 将参数输出为列表,但不保存
-s 将参数保存成命令历史记录中,可以以此伪造命令记录
filename
、环境变量HISTFILE
、~/.bash_history
。返回成功,除非提供了非法选项或出现了错误。
> history 10
> history -c
$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_COMMAND
是bash
的环境变量,这个变量的中内容是作为一个普通的bash
命令执行的,而且执行时间是在bash
显示prompt(命令行前缀提示符)
之前。 这个好理解,就是说每执行一个命令前,PROMPT_COMMAND
里面先执行,然后是prompt(命令行前缀提示符)
。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有