• 命令: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
    
  • 相关阅读:
    java命令模式
    java中介者模式
    java访问者模式
    java状态模式
    java责任链模式
    java策略模式(及与工厂模式的区别)
    github token 位置
    Yii2 Queue队列
    sz与rz
    vim
  • 原文地址:https://www.cnblogs.com/alongdidi/p/linux_command_history.html
Copyright © 2020-2023  润新知