有个姑娘叫history
history命令用于显示用户以前执行过的历史命令,并且能对历史命令进行追加和删除等操作。
常用参数
-a: 将当前shell会话的历史命令追加到命令历史文件中,命令历史文件是保存历史命令的配置文件
-c: 清空当前历史命令列表
-d: 删除历史命令列表中指定序号的命令
-n: 从命令历史文件中读取本次Shell会话开始时没有读取的历史命令
-r: 读取命令历史文件到当前的Shell历史命令内存缓冲区
-s: 将指定的命令作为单独的条目加入命令历史内存缓冲区。在执行添加之前先删除命令历史内存缓冲区中最后一条命令
-w: 把当前的shell历史命令内存缓冲区的内容写入命令历史文件
history的一些用法
[root@localhost ~]# history 20 # 显示最后20条历史命令
234 ls gcc/
235 tar czvf gcc.tar.gz gcc/
236 ll
237 scp gcc.tar.gz 192.168.10.150:/root
238 yum -y install kernel-headers
239 find /var/cache/yum/ -name "*.rpm" -exec mv {} gcc/ \;
240 cd g
241 cd gcc/
242 ll
243 cp kernel-headers-3.10.0-1160.6.1.el7.x86_64.rpm 192.168.10.150:/root
244 scp kernel-headers-3.10.0-1160.6.1.el7.x86_64.rpm 192.168.10.150:/root
245 poweroff
246 hostnamectl
247 poweroff
248 history
249 history --help
250 man history
251 history man
252 man history
253 history 20
[root@localhost ~]# !242 # 执行第242条历史命令(上面可以看到第242条命令是ll)
ll # 哼,那些内容少儿不宜,不给看~~~
[root@localhost ~]# !! # 再次执行上一条历史命令
ll # 没错,少儿不宜,还是不给你看
[root@localhost ~]# history -c # 清空当前历史命令列表
[root@localhost ~]# history
1 history # 这下干净了
修改history命令默认保存的数量
[root@localhost ~]# echo $HISTSIZE
1000 # 系统默认保留的是1000条历史命令
[root@localhost ~]# sed -i 's/^HISTSIZE=1000/HISTSIZE=3000/' /etc/profile
[root@localhost ~]# source /etc/profile
[root@localhost ~]# echo $HISTSIZE
3000 # 将默认的1000改为了3000
来给history穿衣服
上面咱也看到了,没有衣服的history是赤裸裸的,只有编号和命令,咱们现在给她穿衣服
[root@localhost ~]# vim /etc/profile.d/history.sh # /etc/profile.d/下的.sh结尾的文件会在用户login或切换用户的时候自动执行
#!/bin/bash
export HISTFILE=$HOME/.bash_history # 用户登录机器后每敲一个命令都会被记录到HISTFILE指定的文件中,而且是以追加的方式写入的
export HISTSIZE=1200 # history命令最多输出1200行
export HISTFILESIZE=1200 # .bash_history文件中最多保留1200行
export HISTCONTROL=ignoredups # 从命令历史中剔除连续重复的条目
# export HISTCONTROL=erasedups # 清除整个历史命令中的重复条目
# export HISTCONTROL=ignorespace # 强制 history不记住特定的命令,在不想被记住的命令前面输入一个空格
export HISTTIMEFORMAT="`whoami` %F %T " # 指定history的输出格式
shopt -s histappend # 由于bash的history文件默认是覆盖,如果存在多个终端,最后退出的会覆盖以前历史记录,这个是改为追加形式
PROMPT_COMMAND="history -a" # 实时追加history,不必等用户退出才将内存中的history记录到文件
typeset -r HISTTIMEFORMAT # 使用shell的typeset命令,带-r选项,这使得指定的变量拥有只读属性
[root@localhost ~]# source /etc/profile.d/history.sh
让我们重新认识一下history
[root@localhost ~]# history
1 root 2020-12-11 11:42:51 history
2 root 2020-12-11 11:44:02 echo $HISTSIZE
3 root 2020-12-11 11:44:35 sed -i 's/^HISTSIZE=1000/HISTSIZE=3000/' /etc/profile
4 root 2020-12-11 11:44:40 source /etc/profile
5 root 2020-12-11 11:44:51 echo $HISTSIZE
6 root 2020-12-11 11:45:34 vim /etc/profile
7 root 2020-12-11 12:18:58 vim /etc/profile.d/history.sh
8 root 2020-12-11 12:20:18 source /etc/profile.d/history.sh
9 root 2020-12-11 12:20:21 history
'多了操作的用户以及操作的时间,是不是变好看了'
有个姑娘叫history的更多相关文章
- 我们一起来学Shell - 初识shell
文章目录 Shell 的分类 `bash` `csh` `ksh` `tcsh` `sh` `nologin` `zsh` Shell 能做什么 bash 环境变量文件 `/etc/profile` ...
- History API与浏览器历史堆栈管理
移动端开发在某些场景中有着特殊需求,如为了提高用户体验和加快响应速度,常常在部分工程采用SPA架构.传统的单页应用基于url的hash值进行路由,这种实现不存在兼容性问题,但是缺点也有--针对不支持o ...
- 使用backbone的history管理SPA应用的url
本文介绍如何使用backbone的history模块实现SPA应用里面的URL管理.SPA应用的核心在于使用无刷新的方式更改url,从而引发页面内容的改变.从实现上来看,url的管理和页面内容的管理是 ...
- 使用h5的history改善ajax列表请求体验
信息比较丰富的网站通常会以分页显示,在点“下一页”时,很多网站都采用了动态请求的方式,避免页面刷新.虽然大家都是ajax,但是从一些小的细节还是 可以区分优劣.一个小的细节是能否支持浏览器“后退”和“ ...
- HTML5学习笔记之History API
这系列文章主要是学习Html5相关的知识点,以学习API知识点为入口,由浅入深的引入实例,让大家一步一步的体会"h5"能够做什么,以及在实际项目中如何去合理的运用达到使用自如,完美 ...
- Linux下history命令用法
如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率.本文将通过实例的方式向你介绍 history 命令的 15 个用法. 使用 HISTTIMEFORMAT ...
- safari 浏览器window.history.go(-1)运行无效解决办法
这几天做了几个手机端app的wap页面,做完之后发现一个问题,那就是ios系统下的safari浏览器不支持window.history.go(-1)..无语... 解决方法很简单!加上return f ...
- History lives on in this distinguished Polish city II 2017/1/5
原文 Some fresh air After your time underground,you can return to ground level or maybe even a little ...
- History lives on in this distinguished Polish city 2017/1/4
原文 History lives on in this distinguished Polish city Though it may be ancient. KraKow, Poland, is a ...
随机推荐
- PPT制作图片磨砂玻璃艺术效果
如果图片损害,点击链接:https://www.toutiao.com/i6488928834799272462/ 选择"插入"选项卡,"图像"功能组,&quo ...
- c#多进程通讯,今天,它来了
引言 在c#中,可能大多数人针对于多线程之间的通讯,是熟能生巧,对于AsyncLocal 和ThreadLocal以及各个静态类中支持线程之间传递的GetData和SetData方法都是信手拈来,那多 ...
- Python入门(上)
Python入门(上) Python入门(上) 简介 Python 基础语法 行与缩进 注释 运算符 标准数据类型 变量 编程流程 顺序(略) 分支 if 循环 for while break 和 c ...
- 利用代码生成工具Database2Sharp生成ABP VNext框架项目代码
我们在做某件事情的时候,一般需要详细了解它的特点,以及内在的逻辑关系,一旦我们详细了解了整个事物后,就可以通过一些辅助手段来提高我们的做事情的效率了.本篇随笔介绍ABP VNext框架各分层项目的规则 ...
- vue3路由的使用,保证你有所收获!
路由变量 有的小伙伴,可能是第一次听见路由变量这个词. 什么是路由变量了,顾名思义就是这个路由地址是动态的,不是固定的. 它的运用场景是哪里呢? 比如说:1.详情页的地址,我们就可以去使用路由变量. ...
- Api自动生成
如果经常对接api, 可以自己写一个自动化生成代码,提高效率 只抛出一个思路,暂不提供源码 使用json+字符串处理+生成文件 发送一个请求,返回字符串转换为 Newtonsoft.Json.Linq ...
- Android Native -- Message/Handler/Looper机制(原理篇)
⌈Android Native消息队列处理系列文章⌋ Android Native -- Message/Handler/Looper机制(原理篇) Android Native -- Message ...
- 同态加密与 Paillier/RSA
本文作者: wdxtub 本文链接: http://wdxtub.com/flt/flt-03/2020/12/02/ 白话同态加密 虽然同态加密即使现在听起来也很陌生,但是其实这个概念来自 1978 ...
- 最长公共子序列-LIS
题目描述 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个长为\(n\)的序列,求它的最长上升子序列的长度. 输入格式 输入第一行包含一个整数\(n\). 第二行包含\(n\)个整数\ ...
- 马哈鱼间接数据流中的where-group-by子句
马哈鱼间接数据流中的where-group-by子句 本文介绍间接数据流中的where-group-by子句. 1.列在where子句中 WHERE子句中源表中的某些列不影响目标列,但对所选行集至关重 ...