命令:history
简介
shell进程会在其会话中保存此前用户执行过的命令。
历史列表(history list):当前shell所使用的历史命令存储位置。
历史文件(history file):每次登入shell,就会从历史文件中读取历史命令并加载进历史列表中;每次登出shell,会将当前历史列表中的命令附加到历史文件中。
相关的环境变量
- HISTFILE:指定历史文件的位置,如果为空,则使用~/.bash_history,它是一个文本文件,以每行一条命令的形式简单记录了历史命令。
- HISTFILESIZE:历史文件中可保留的最大历史命令数。
- HISTSIZE:在历史列表中可保存的最大历史命令数。
- HISTTIMEFORMAT:使历史命令可以显示时间戳。
- HISTCONTROL:控制shell记录命令的行为,值有三种情况。
- ignoredups:忽略连续重复的命令;连续的N条重复的命令,在历史列表中只会记录1条。
- ignorespace:忽略以空白字符开头的命令(可以用来秘密执行某些操作)。
- ignoreboth:等同于以上两者同时生效;既忽略连续重复的命令,又忽略空白字符开头的命令。
语法
有三种语法格式
格式一
history [-c] [-d offset] [n]
选项-c、-d和参数n都是分开单独使用。
- -c:清空历史列表。
- -d offset:删除第几个历史命令。offset就是历史命令的编号。只能删除1条历史命令,即便在offset之后跟上一个数字n,也还是只能删除1条。
- history n:n是一个正整数,表示显示最近n条历史命令。
格式二
history -anrw [filename]
此格式用于操控历史文件和历史列表。filename即历史文件,可另外指定。
- -a:将当前会话中的历史命令追加到历史文件中。
- -n:读取所有历史文件中还未读取的历史命令。
- -r:读取历史文件中的历史命令并且追加到历史列表。
- -w:将当前历史写入到历史文件并且追加它们到历史列表。存疑:命令键入后,本来就会进入历史列表中作为历史命令存在,这个选项中的“追加它们到历史列表”的操作,不知道有何用意?
格式三
history -ps arg [arg...]
这种格式,基本不会使用,涉及到历史命令展开以及向历史命令新增条目之类的,不做了解了。
小贴士
!n
根据历史命令的编号快速执行历史列表中的命令。
在bash手册中,这叫做历史命令的展开(History Expansion)。
[root@C7 ~]# history 10
982 help history
983 echo $HISTSIZE
984 echo $HISTFILESIZE
985 history 20
986 456
987 history -a
988 789
989 history -a
990 history 20
991 history 10
[root@C7 ~]# !986
456
bash: 456: command not found...
!!
快速执行历史列表中的上一条命令。
[root@C7 ~]# pwd
/root
[root@C7 ~]# !!
pwd
/root
!STRING
再一次执行命令历史列表中最近一次以STRING开头的命令。
[root@C7 ~]# history 10
993 pwd
994 history 10
995 cat /etc/passwd
996 file /etc/passwd
997 ls -l /etc/passwd
998 ls -ld ~
999 pwd
1000 uptime
1001 who
1002 history 10
[root@C7 ~]# !ls
ls -ld ~
dr-xr-x---. 16 root root 4096 Nov 8 11:37 /root
调用上一条命令的最后一个命令参数
ESC+“.”
按一下ESC,再按一下小数点按键,命令参数就会自动补全了。
按一下的意思就是,按完就放开,别按住了。
COMMAND !$
[root@C7 ~]# ls -l /etc/passwd
-rw-r--r--. 1 root root 2243 Sep 27 15:59 /etc/passwd
[root@C7 ~]# ls -l !$
ls -l /etc/passwd
-rw-r--r--. 1 root root 2243 Sep 27 15:59 /etc/passwd
命令:history的更多相关文章
- 历史命令history
历史命令在用户注销之后会保存在用户家目录下的-/.bash_history中 history #查看系统中实时缓存的历史命令,与.bash_history中的内容并不完全相同 history -c # ...
- linux查看历史命令history
在linux下,我们有可能需要查看最近执行过的命令(历史命令),我们可以进行如下操作: # 显示使用过的所有历史命令 $ history # 显示最近使用的5个命令 $ history 5 我们可以通 ...
- linux常用命令 history命令
历史命令 history [选项] [历史命令保存文件] 选项 '-c' 清空历史命令 '-w' 把缓存中的历史命令写入历史命令保存文件~/.bash_history [root@ssgao1987 ...
- 自学Linux Shell5.2-shell内建命令history alias
点击返回 自学Linux命令行与Shell脚本之路 5.2-shell内建命令history alias 外部命令:有时称为文件系统命令,是存在于bash shell之外的程序,通常位于/bin./u ...
- Linux Shell基础 Bash常见命令 history、alias命令以及常用快捷键
概述 shell中常见命令history 历史纪录命令:history 命令格式如下: [root@localhost ~]# history [选项] [历史命令保存文件] -c:清空历史命令: ...
- linux 查看历史命令 history命令
1.history命令 "history"命令就是历史记录.它显示了在终端中所执行过的所有命令的历史. history //显示终端执行过的命令 history 10 //显示最近 ...
- Linux 命令 - history: 显示或操作历史列表
命令格式 history [-c] [-d offset] [n] history -anrw [filename] history -ps arg [arg...] 命令参数 -c 清除历史列表. ...
- linux显示历史命令history
history history//显示历史命令
- Linux命令:history
显示历史(执行过的)命令. history [n] history -c history -d offset history -anrw [filename] history -p arg [arg ...
- 查看历史命令 history
生产上有文件被清空了,想查查是谁操作的? 通过history查看历史命令: $history |more 也可以通过文件查看历史命令: $vi ~/.bash_history 只显示历史命令,像查一查 ...
随机推荐
- 【洛谷P1087】FBI树
题目大意:后序遍历 题解:建立二叉树的码风不知道怎么突然跟线段树一样了...当然,这道题不建树也是可以的. 代码如下 #include <bits/stdc++.h> using name ...
- 伸展树(Splay)复杂度证明
本文用势能法证明\(Splay\)的均摊复杂度,对\(Splay\)的具体操作不进行讲述. 为了方便本文的描述,定义如下内容: 在文中我们用\(T\)表示一棵完整的\(Splay\),并(不严谨地)用 ...
- Intel 8086_通用寄存器|段寄存器
- Java基础-赋值运算符Assignment Operators与条件运算符Condition Operators
Java基础-赋值运算符Assignment Operators与条件运算符Condition Operators 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.赋值运算符 表 ...
- 基于docker的spark-hadoop分布式集群之二: 环境测试
在上一章<环境搭建>基础上,本章对各个模块做个测试 Mysql 测试 1.Mysql节点准备 为方便测试,在mysql节点中,增加点数据 进入主节点 docker exec -it had ...
- 【DS】排序算法之选择排序(Selection Sort)
一.算法思想 选择排序是一种简单直观的排序算法.它的工作原理如下: 1)将序列分成两部分,前半部分是已经排序的序列,后半部分是未排序的序列: 2)在未排序序列中找到最小(大)元素,放到已排序序列的末尾 ...
- 关于升级程序版本时version与build修改的问题
CHENYILONG Blog 关于升级程序版本时version与build修改的问题 #问题#从V1.0升级到V1.0.1.version是一定要改的,那么build需要修改吗? #解答#一般习惯上 ...
- OC中实现锁
熟悉多线程开发的同学对锁肯定不陌生,但是OC中如何实现锁呢?给大家科普一下. 首先构建一个测试用的类,假想它是我们的一个共享资源,method1与method2是互斥的,代码如下: @implemen ...
- 大话C#中能使用foreach的集合的实现
大家都知道foreach的语法:foreach(var item in items){ Console.Writeln(item);} 通过这样一个简单的语句,就能实现遍历集合items中的所有元素. ...
- 【IT界的厨子】家常版本的黄焖鸡
前言: 周末在家,闲来无事, 使用简单的食材,满足家人的味蕾,做出秒杀馆子的黄焖鸡(我是这么认为的).虽然没有厨师的手艺,但为家人做饭,也是一种幸福. 用料: 主料:老母鸡一只,要求店老板剁好 配料: ...