概述

  • 当执行命令后,系统默认会在内存记录执行过的命令
  • 当用户正常退出时,会将内存的命令历史存放对应历史文件中,默认是~/.bash_history
  • 登录shell时,会读取命令历史文件中记录下的命令加载到内存中
  • 登录进shell后新执行的命令只会记录在内存的缓存区中;这些命令会用户正常退出时“追加”至命令历史文件中
  • 利用命令历史。可以用它来重复执行命令,提高输入效率

命令:history

  1. history [-c] [-d offset] [n]
  2. history -anrw [filename]
  3. history -ps arg [arg...]
  • -c: 清空命令历史
  • -d offset: 删除历史中指定的第offset个命令
  • n: 显示最近的n条历史
  • -a: 追加本次会话新执行的命令历史列表至历史文件
  • -r: 读历史文件附加到历史列表
  • -w: 保存历史列表到指定的历史文件
  • -n: 读历史文件中未读过的行到历史列表
  • -p: 展开历史参数成多行,但不存在历史列表中
  • -s: 展开历史参数成一行,附加在历史列表后

命令历史相关环境变量

环境变量可以 export 变量名="值" 形式存放在 /etc/profile 或 ~/.bash_profile

  • HISTSIZE:命令历史记录的条数
  • HISTFILE:指定历史文件,默认为~/.bash_history
  • HISTFILESIZE:命令历史文件记录历史的条数
  • HISTTIMEFORMAT="%F %T whoami" 显示时间和用户
  • HISTIGNORE="str1:str2*:…" 忽略str1命令,str2开头的历史
  • HISTCONTROL:控制命令历史的记录方式
    • ignoredups 是默认值,可忽略重复的命令,连续且相同为“重复”
    • ignorespace 忽略所有以空白开头的命令
    • ignoreboth 相当于ignoredups, ignorespace的组合
    • erasedups 删除重复命令
  1. [root@centos8 ~]#cat .bash_profile
  2. # .bash_profile
  3. # Get the aliases and functions
  4. if [ -f ~/.bashrc ]; then
  5. . ~/.bashrc
  6. fi
  7. # User specific environment and startup programs
  8. PATH=$PATH:$HOME/bin
  9. export PATH
  10. export HISTCONTROL=ignoreboth
  11. export HISTTIMEFORMAT="%F %T "
  12. [root@centos8 ~]#history
  13. 1 2019-12-13 08:39:05 ls /data
  14. 2 2019-12-13 08:39:05 date
  15. 3 2019-12-13 08:39:05 vie0
  16. 4 2019-12-13 08:39:05 nano .bash_profile
  17. 5 2019-12-13 08:39:05 exit

给history添加时间戳

将export HISTTIMEFORMAT="%F %T " 写进~/.bash_profile里即可

  1. [root@C8-1 ~]# export HISTTIMEFORMAT="%F %T `whoami`"
  2. [root@C8-1 ~]# history
  3. 1 2020-06-15 22:53:36 rootdmidecode|grep System Information -A9|egrep Manufacturer|Product|Serial
  4. 2 2020-06-15 22:53:36 rootcat /etc/redhat-release
  5. 3 2020-06-15 22:53:36 rootshutdown ?
  6. 4 2020-06-15 22:53:36 roothelp shutdown
  7. 5 2020-06-15 22:53:36 rootshutdown -h
  8. 6 2020-06-15 22:53:36 rootshutdown -c
  9. 7 2020-06-15 22:53:36 rootshutdown -s
  10. 8 2020-06-15 22:53:36 rootshutdown now

重复前一个命令方法

重复前一个命令使用上方向键,并回车执行

按 !! 并回车执行

输入 !-1 并回车执行

按 Ctrl+p 并回车执行

!:0

输入叹号和命令编号重复执行history记录的命令

  1. 383 2020-06-16 10:04:14 root pts/0 2020-06-16 09:58 (192.168.50.200) ll
  2. 384 2020-06-16 10:11:58 root pts/0 2020-06-16 09:58 (192.168.50.200) echo file{1,3,5}
  3. 385 2020-06-16 10:12:22 root pts/0 2020-06-16 09:58 (192.168.50.200) echo {1..35}
  4. 386 2020-06-16 10:12:34 root pts/0 2020-06-16 09:58 (192.168.50.200) echo {a..z}
  5. 387 2020-06-16 10:12:40 root pts/0 2020-06-16 09:58 (192.168.50.200) echo {a..Z}
  6. ……
  7. 401 2020-06-16 10:47:56 root pts/0 2020-06-16 09:58 (192.168.50.200) history
  8. [10:47:56 root@C8[ 2020-06-16DIR]#!383
  9. ll
  10. total 0
  11. -rw-r--r--. 1 root root 0 Jun 16 10:03 C8_2020-06-16.log
  12. -rw-r--r--. 1 root root 0 Jun 16 10:04 C8_root_2020-06-16.log

Linux命令行history的更多相关文章

  1. 像黑客一样使用 Linux 命令行

    前言 之前在博客园看到一篇介绍 IntelliJ IDEA 配置的文章,它里面用的是 gif 动态图片进行展示,我觉得很不错.所以在我今天以及以后的博文中,我也会尽量使用 gif 动图进行展示.制作 ...

  2. Linux命令行与命令

    Linux命令行与命令   作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Linux的命令是很重要的工具,也往往是初学者最大的瓶 ...

  3. 在Linux命令行下令人惊叹的惊叹号(!)

    '!'符号在Linux中不但可以用作否定符号,还可以用来从历史命令记录中取出命令或不加修改的执行之前运行的命令.下面的所有命令都已经在Bash Shell中经过确切地检验.尽管我没有试过,但大多都不能 ...

  4. Linux命令行技巧

    Linux命令行技巧 命令 描述 • apropos whatis 显示和word相关的命令. 参见线程安全 • man -t man | ps2pdf - > man.pdf 生成一个PDF格 ...

  5. 给新手的 10 个有用 Linux 命令行技巧

    我记得我第一次使用 Linux 的时候,我还习惯于 Windows 的图形界面,我真的很讨厌 Linux 终端.那时候我觉得命令难以记忆,不能正确使用它们.随着时间推移,我意识到了 Linux 终端的 ...

  6. Linux命令行编辑快捷键

    Linux命令行编辑快捷键: history 显示命令历史列表 ↑(Ctrl+p) 显示上一条命令 ↓(Ctrl+n) 显示下一条命令 !num 执行命令历史列表的第num条命令 !! 执行上一条命令 ...

  7. scala调用Linux命令行

    在 scala 里面存在 调用 Linux 命令行的函数: import scala.sys.process._ 执行的方法也不难: import scala.sys.process._ /** * ...

  8. Linux命令行下编辑常用的快捷键

    Linux命令行编辑快捷键: Ctrl+r 然后输入若干字符,开始向上搜索包含该字符的命令,继续按Ctrl+r,搜索上一条匹配的命令,按Ctrl+c或上下键退出. Ctrl+l 清屏 !num 执行命 ...

  9. 自学Linux命令行与Shell脚本之路

    自学Linux命令行与Shell脚本之路[第一回]:初识Linux   1.1 自学Linux Shell1.1-Linux初识 1.2 自学Linux Shell1.2-Linux目录结构 1.3  ...

随机推荐

  1. 《Offer一箩筐》2W字总结面试套路14问——不给例子的教程都是耍流氓!!

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」. 如果觉得 「不错」 的朋友,欢迎 「关注 + 留言 + 分享」,文末有完整的获取链接,您的支持是我前进的最大的动力! Hi~ 这里是 ...

  2. SVN检出maven项目

    (一)直接单击项目,右键选择configure,选择convert to maven project (二)删除project explorer中的项目,并重新从工作区间导入maven项目.

  3. 第二篇 配置wcf

    老老实实学WCF 第二篇 配置WCF 在上一篇中,我们在一个控制台应用程序中编写了一个简单的WCF服务并承载了它.先回顾一下服务端的代码: using System; using System.Col ...

  4. Element-UI:级联选择器:Cannot read property 'level' of null"

    当级联选择时如果其选择内容需要动态变化时,如果没有选择就不会报错的:而当做出选择后又要动态变化级联选择器内容时,就会报错/ 错误:这个错误的原因是当选择后,再更新内容时,选择器仍会关联原来的数据,导致 ...

  5. vue入门(一)----工程vue_sell

    1.利用vue脚手架工具创建vue,webpack工程目录 npm install -g vue-cli  安装vue脚手架 vue init webpack sell 初始化一个webpack模板, ...

  6. Windows10上安装MySQL(详细)

    一.下载MySQL 1.在浏览器里打开mysql的官网http://www.mysql.com 2.进入页面顶部的"Downloads" 3.下滑页面,打开页面底部的"C ...

  7. 百度地图四(Android百度地图Poi检索开发总结)

    https://blog.csdn.net/wenzhi20102321/article/details/54575999

  8. mysql-12-DDL

    #DDL /* 数据定义语言 库和表的管理 一.库的管理 创建.修改.删除 二.表的管理 创建.修改.删除 创建 create 修改 alter 删除 drop */ #一.库的管理 #1.库的创建 ...

  9. 剑指offer-字符串&数字规律

    1. 表示数值的字符串 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123",&q ...

  10. 可变参数__VA_ARGS__使用

    1. 调试功能一般会使用到宏+可变参数的方式 1.1 ##__VA_ARGS__      之详细解析 例如: case A. #define my_print1(...)    printf(__V ...