bash可以保存的过去曾经执行过的命令。当某个用户登录到shell中,会读取该用户家目录中的~/.bash_history文件,并将历史命令列表保存到内存中。当用户退出当前shell时,会将内存中的历史命令列表覆盖至~/.bash_history文件。

  我们可以通过# histroy 来查看历史命令。history是bash的内部命令。通过# help history获取帮助。

一、history的常见选项

# history
。。。 # 省略前面
man poweroff
poweroff --reboot
man poweroff
man shutdown
shutdown + "Goodbye SB"
shutdown -c
man rm
info rm
man history
enable
enable | grep history
help history
history
history -d
history
echo $HISTORYSIZE
history

# history -c        清空命令历史记录

# history -d N      N为整数,删除历史中序号是N的命令

# history N         N为整数,显示最近N条历史

# history -a        追加本次回话新执行的命令历史列表至~/.bash_history文件

# history -r        读历史文件附加到历史列表

# history -w        保存历史列表到指定的历史文件

# history -n        读历史文件中未读过的行到历史列表

# history -p        展开历史参数成多行,但不存在历史列表中

# history -s        展开历史参数成一行,附加在历史列表后

二、调用命令历史的方法

1、重复前一个命令,有4种方法

  • 使用方向键↑选中命令,按↑↓调整,并回车执行
  • 输入!! 并回车执行
  • 输入!-1 并回车执行
  • 按Ctrl + p,调出命令,并回车执行

2、 !:0 执行前一条命令(去除参数)

3、 Ctrl + n显示当前历史中的下一条!命令,但不执行

4、 Ctrl + j执行当前命令

5、 !n 执行history命令输出对应序号为n的命令

6、 !-n执行history历史中倒数第n个命令

7、 !string 重复前一个以“string”字符串开头的命令

8、 !?string 重复前一个包含string字符串的命令

9、 !string:p   仅打印命令历史,而不执行

10、 !$:p 打印输出!$(上一条命令的最后一个参数)的内容

11、 !*:p 打印输出!*(上一条命令的所有参数)的内容

12、 ^string 删除上一条命令中的第一个string

13、 ^string1^string2将上一条命令中的第一个string1替换为string2

14、 !:gs/string1/srting2 将上一条命令中所有的string1都替换为string2

15、使用方向键↑↓键来上下浏览从前输入的命令

16、Crtl + r来在命令历史中搜索命令

进入(reverse-i-search)`':模式

17、 Crtl + g 从历史搜索模式退出

18、 重新调用前一个命令中最后一个参数,3种方法

  !$

  Esc . (点击Esc键后松开,然后点击.键)

   Alt+. (按住Alt键的同时点击.键),在一些终端软件中屏蔽了Alt功能键,需要开启

19、command !^      利用上一个命令的第一个参数做cmd的参数

  command !$      利用上一个命令的最后一个参数做cmd的参数

  command !*      利用上一个命令的全部参数做cmd的参数

  command !:n     利用上一个命令的第n个参数做cmd的参数

  command !n:^    调用第n条命令的第一个参数

  command !n:$    调用第n条命令的最后一个参数

  command !n:m    调用第n条命令的第m个参数

  command !n:*    调用第n条命令的所有参数

  command !srting:^   从命令历史中搜索string开头的命令,并获取它的第一个参数

  command !srting:$   从命令历史中搜索string开头的命令,并获取它的最后一个参数

  command !srting:n   从命令历史中搜索string开头的命令,并获取它的第n个参数

  command !srting:*   从命令历史中搜索string开头的命令,并获取它的所有参数

三、命令历史相关的环境变量

  HISTSIZE:命令历史中可以保存的命令的个数,默认值为1000

  HISTFILE:命令历史保存在哪个文件,默认为当前用户家目录中的.bash_history文件

  HISTFILESIZE:命令历史文件可以保存的命令的个数,默认值为1000

  HISTIGNORE='command1:command2:...',让历史命令不记录执行过的命令,默认为NULL

举例:HISTIGNORE='ls'  #让历史文件不记录ls命令,但是如果ls命令后接任何参数(包括空格)都会记录起来。所以要完全不记录任何与ls相关的命令,需要赋值为'ls *',即 HISTIGNORE='ls *'

  HISTTIMEFORMAT="%F %T-->"   执行history 命令显示的时候,带有此格式时间。

          让~/.bash_history带有相对时间如:#1560378603

  HISTCONTROL=[ignoredups|ignoredups|ignoreboth|erasedups],控制命令历史的生成

    ignoredups:忽略记录重复的命令:连续相同的命令为重复命令(默认的变量值)

    ignorespace:不记录以空白字符开头的命令

    ignoreboth:相当于上面两个参数ignoredups,ignorespace的组合

    erasedups:  删除重复命令

注意:修改环境变量建议在/etc/profile.d/中创建***.sh文件,便于日后的查看和管理

Linux命令:history命令历史的管理及用法的更多相关文章

  1. linux下history命令显示历史指令记录的使用方法

    Linux系统当你在shell(控制台)中输入并执行命令时,shell会自动把你的命令记录到历史列表中,一般保存在用户目录下的.bash_history文件中.默认保存1000条,你也可以更改这个值 ...

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

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

  3. Linux下history命令用法

    如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率.本文将通过实例的方式向你介绍 history 命令的 15 个用法. 使用 HISTTIMEFORMAT ...

  4. Linux下history命令详解---转载

    Linux下History命令主要用于显示历史指令记录内容, 下达历史纪录中的指令 . >History命令语法:[www.linuxidc.com@linux]# history [n][ww ...

  5. [Linux] 关于 history 命令的简单使用

    1. 如果不想记录当前 会话操作的命令的话 可以使用命令 set +o history 但是这个命令有一个坏处, 他自己被记住了... 2. 还有一个办法 就是 在退出登录之前执行命令 history ...

  6. Linux:history命令详解

      Linux下History命令 主要用于显示历史指令记录内容, 下达历史纪录中的指令 . 语法 history [n] history [-c] history [-raw] histfiles ...

  7. 【转】Linux下history命令用法

    转自:http://blog.sina.com.cn/s/blog_5caa94a00100gyls.html 如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你 ...

  8. linux常用命令 history命令

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

  9. linux的history命令设置

    history的历史记录,同一个用户的各个会话,读取到的内容也是不一样的,原因是它读取的是shell会话缓存里的内容.只有当用户退出当前会话的时候,会话里的缓存内容才会写入~/.bash_histor ...

随机推荐

  1. WCF全面解析之 第四讲 使用代码 部署服务

    关键代码: ServiceHost host = null; //启动 private void button1_Click(object sender, EventArgs e) { host=ne ...

  2. Bugku-CTF加密篇之easy_crypto(0010 0100 01 110 1111011 11 11111 010 000 0 001101 1010 111 100 0 001101 01111 000 001101 00 10 1 0 010 0 000 1 01111 10 11110 101011 1111101)

    easy_crypto 0010 0100 01 110 1111011 11 11111 010 000 0 001101 1010 111 100 0 001101 01111 000 00110 ...

  3. maven工程引入外部jar包

    pom.xml: <dependency> <groupId>new</groupId> <artifactId>new</artifactId& ...

  4. python2.7环境下升级pip3,及出错解决办法

    执行 pip3 install --upgrade pip 进行升级 升级后若出现, Import Error:cannot import name main 是因为将pip更新为10.0.0后库里面 ...

  5. Docker for YApi--一键部署YApi

    获取YApi镜像$ docker pull mrjin/yapi:latest 注意:本仓库目前只支持安装,暂不支持升级,请知晓.如需升级请备份mongoDB内的数据. docker-compose ...

  6. Ubuntu配置Python开发环境(PyCharm、Tensorflow)

    安装JDK: https://www.cnblogs.com/wanghuixi/p/9837229.html 安装Anaconda: 安装PyCharm: https://www.cnblogs.c ...

  7. Mac 系统添加右键功能菜单--新建 office,文档等

    Mac 系统自带右键功能键比较少,可以添加服务来拓展功能项.例如 Windows 系统右键可以新建 Word 文档,Excel 工作表等,Mac 默认没有,需要进行设置添加. 首先 F4 键进入 La ...

  8. QWidget: “Must construct a QApplication before a QWidget”

    最近在做一个关于Qt的项目,在debug版本中没有任何问题,所以就想看看在Release版本下的运行情况,结果在开始运行时,出现如下图1-1所示的错误.在网上搜索答案,大多数是关于QWidget: M ...

  9. jemter-plugins-maven dependency -WIiki用法配置介绍

    1.先介绍下jmeter 的maven中央仓库地址,有兴趣自己看下 https://mvnrepository.com/artifact/org.apache.jmeter 2.Wiki github ...

  10. Dart语言学习(十三) Dart Mixins 实现多继承

    Mixins Mixins(混入功能)相当于多继承,也就是说可以继承多个类,使用with关键字来实现Mixins的功能. 那么多个类中有相同的方法时候,会被覆盖吗?覆盖的先后是什么? class A{ ...