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

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

一、history的常见选项

# history

。。。 # 省略前面994 manpoweroff995 poweroff --reboot996 manpoweroff997 manshutdown998 shutdown +2 "Goodbye SB"

999 shutdown -c1000 man rm

1001 info rm

1002 manhistory1003enable1004 enable | grephistory1005help history1006history1007 history -d 1000

1008history1009 echo$HISTORYSIZE1010 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作用,Linux命令:history命令历史的管理及用法相关推荐

  1. linux系统中pwd命令的作用,Linux运维pwd命令有什么用途?linux系统

    Pwd命令用于显示当前所在的位置,是Linux运维工作人员需要掌握的Linux文件和目录操作命令之一.对于Linux运维工作,Linux命令是必不可少的.随着技术的发展,市场对于Linux运维人才的需 ...

  2. linux命令管道符号作用,linux认证:unix中管道符让输入源不起作用

    在Unxi操作系统中,标准输入和标准输出是外壳程序中可以单独使用的两个独立流.但是有时候系统工程师需要让某些特定的输入源不起作用.当系统工程师在开发一些实用的脚本程序的过程中,经常需要用到. 一.在什 ...

  3. linux中egrep命令的作用,linux命令积累之egrep命令(示例代码)

    学搭建Nginx环境,必须要配置的Nginx.conf文件中,如下: #user  nobody; worker_processes  1; #error_log  logs/error.log; # ...

  4. Linux的inode作用,Linux下inode知识

    [TOC] 背景 今天复习Linux命令,到df的时候发现了一个之前忽略的东西.也就是 -i 这个选项,列出文件系统分区的inode信息.这个inode,是个什么东西? inode是用来做什么的 in ...

  5. linux cat命令的作用,Linux中cat命令的作用有哪些

    本期微子网络将为您带来Linux中的cat命令的功能.文章内容丰富,从专业角度分析叙述.看完这篇文章,希望你能有所收获. cat命令的目的是连接文件或标准输入并打印它们.此命令通常用于显示文件内容,或 ...

  6. sed命令的作用linux,Linux重要命之sed命令详解

    导读 Sed 代表流编辑器,常用于 Linux 中基本的文本处理.sed 命令是 Linux 中的重要命令之一,在文件处理方面有着重要作用.可用于删除或移动与给定模式匹配的特定行. 如何使用sed命令 ...

  7. linux中where作用,linux基础命令——whereis命令的使用介绍

    摘要: ​linux基础命令中的whereis命令用于查找文件.​该指令会在特定目录中查找符合条件的文件.这些文件应属于原始代码.二进制文件,或是帮助文件.​该指令只能用于查找二进制文件.源代码文件和 ...

  8. linux的passwd命令的作用,Linux passwd 命令的使用

    1.命令简介 passwd 令用于设置用户的认证信息,包括用户密码.账户锁定.密码失效等. 系统管理员能用它管理系统用户的密码,只有管理员可以指定用户名称,一般用户只能变更自己的密码. 2.命令格式 ...

  9. linux中touch命令的作用,Linux中touch命令的作用是什么

    今天微子网络向你展示了触摸命令在Linux中的功能.内容简洁易懂,一定会让你眼前一亮.希望通过这篇文章的详细介绍,你能有所收获. linux的Touch命令不常用,但在使用make时可能会用到,mak ...

最新文章

  1. 程序员保值的五个关键点
  2. 三次样条插值Python实现
  3. java 中遍历目录下所有文件
  4. 新手如何使用有三AI系统性跟读AI领域的论文
  5. android广告页白屏_年度整理!2056页《大厂安卓岗面试真题解析合集》火爆全网...
  6. vue如何获取年月日_好程序员web前端教程分享Vue相关面试题
  7. Python 西瓜书机器学习支持向量机(SVM)
  8. Java经典编程题50道之三十二
  9. QT 5.12.9 +VS 2019配置并实现与三菱Q系列PLC通讯功能(1)软件的安装
  10. 计算机键盘没有fn,教您fn键设置方法
  11. 万凯新材深交所上市破发:募资超30亿 公司市值101亿
  12. 商务智能大总结4 聚类分析
  13. 《笨方法学 Python 3》31. 作出决定
  14. Python处理视频文件的实用姿势
  15. STARK代码详细学习笔记
  16. Android 存储选择
  17. Android视频转换GIF图片Bitmap转GIF
  18. 【GBASE】南大通用GBase 8a MPP Cluster技术特点
  19. PyGame弹珠游戏双人粗略版
  20. 企业微信机器人发送消息

热门文章

  1. gridview获取选中行数据_Word转Excel,不想熬夜加班,那就掌握这个数据清洗方法...
  2. android 按钮带图标 阴影_android中带图标的按钮(ImageButton)怎么用
  3. VBoxManage: error: Nonexistent host networking interface, name 'vboxnet0' (VERR_INTERNAL_ERROR)
  4. JQuery $.each遍历JSON字符串报Uncaught TypeError:Cannot use 'in' operator to search for
  5. linux服务器虚拟内存设置,修改Linux服务器虚拟内存Swap大小
  6. 康乐php一键脚本,kangle一键脚本
  7. Java日历compareTo()方法与示例
  8. java calendar_Java Calendar getLeastMaximum()方法与示例
  9. 汉子编码比字母编码长_字母/博客作者编码问题(使用动态编程)
  10. python凯撒密码实现_密码:凯撒密码及其Python实现