简介

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的更多相关文章

  1. 历史命令history

    历史命令在用户注销之后会保存在用户家目录下的-/.bash_history中 history #查看系统中实时缓存的历史命令,与.bash_history中的内容并不完全相同 history -c # ...

  2. linux查看历史命令history

    在linux下,我们有可能需要查看最近执行过的命令(历史命令),我们可以进行如下操作: # 显示使用过的所有历史命令 $ history # 显示最近使用的5个命令 $ history 5 我们可以通 ...

  3. linux常用命令 history命令

    历史命令 history [选项] [历史命令保存文件] 选项 '-c' 清空历史命令 '-w' 把缓存中的历史命令写入历史命令保存文件~/.bash_history [root@ssgao1987 ...

  4. 自学Linux Shell5.2-shell内建命令history alias

    点击返回 自学Linux命令行与Shell脚本之路 5.2-shell内建命令history alias 外部命令:有时称为文件系统命令,是存在于bash shell之外的程序,通常位于/bin./u ...

  5. Linux Shell基础 Bash常见命令 history、alias命令以及常用快捷键

    概述  shell中常见命令history 历史纪录命令:history 命令格式如下: [root@localhost ~]# history [选项] [历史命令保存文件] -c:清空历史命令: ...

  6. linux 查看历史命令 history命令

    1.history命令 "history"命令就是历史记录.它显示了在终端中所执行过的所有命令的历史. history //显示终端执行过的命令 history 10 //显示最近 ...

  7. Linux 命令 - history: 显示或操作历史列表

    命令格式 history [-c] [-d offset] [n] history -anrw [filename] history -ps arg [arg...] 命令参数 -c 清除历史列表. ...

  8. linux显示历史命令history

    history history//显示历史命令

  9. Linux命令:history

    显示历史(执行过的)命令. history [n] history -c history -d offset history -anrw [filename] history -p arg [arg ...

  10. 查看历史命令 history

    生产上有文件被清空了,想查查是谁操作的? 通过history查看历史命令: $history |more 也可以通过文件查看历史命令: $vi ~/.bash_history 只显示历史命令,像查一查 ...

随机推荐

  1. 迭代器Iterator与ConcurrentModificationException详解

    背景:一直以来对迭代器的问题理解不是很透彻,特别是迭代器和异常ConcurrentModificationException之间的联系.通过debug,详细了解其底层的具体实现过程. 简介 Itera ...

  2. mybatis与分布式事务的面试

    mybatis的面试: https://www.cnblogs.com/huajiezh/p/6415388.html 本地事务与分布式事务: https://www.cnblogs.com/xcj2 ...

  3. 理解JVM GC

    理解JVM GC对于我们把控Java应用有很大的帮助.下面我从运维角度,把网上的JVM相关的资料整理如下,以加深对JVM GC的理解.如有错误的地方,请看官指正. JVM内存使用分类 JVM的内存分区 ...

  4. Spark记录-Scala类与对象小例子

    //基类-Person class Person(val na: String, val ag: Int) { //属性 var name: String = na var age: Int = ag ...

  5. 【原创】backbone1.1.0源码解析之View

    作为MVC框架,M(odel)  V(iew)  C(ontroler)之间的联系是必不可少的,今天要说的就是View(视图) 通常我们在写逻辑代码也好或者是在ui组件也好,都需要跟dom打交道,我们 ...

  6. Yii 自定义模型路径

    例如现有两个 Yii 项目,分别是 test1 和 test2.在 test1 中,已经有模型了,test2 直接调用 test1 中的模型,其实添加个别名,然后修改下配置即可. 先在 index.p ...

  7. 用phpStorm的数据库工具来管理你的数据库

    phpStorm是一个功能强大的IDE,不仅对PHP提供了支持,而且对前端HTML.CSS.JavaScript的支持也是非常不错的.此外,phpStorm还集成了很多实用的功能,下面就phpStor ...

  8. JavaScript继承详解(二)

    这一章我们将会重点介绍JavaScript中几个重要的属性(this.constructor.prototype), 这些属性对于我们理解如何实现JavaScript中的类和继承起着至关重要的作用. ...

  9. springMvc + Maven 项目提示 hessian 依赖包 无法下载;

    首先 从 https://github.com/alibaba/dubbo/archive/master.zip 下载最新的 dubbo 源码包到本地某个目录, 解压出来: cmd 进入该目录: 执行 ...

  10. linux - JDK 环境

    JDK安装 vi /etc/profile # 添加环境变量 export JAVA_HOME=/usr/local/jdk1.8.2_45 export CLASSPATH=.:$JAVA_HOME ...