shell进程会保存当前用户之前用过的命令,这些保存的命令可以使用history命令查看,同时可以将历史命令文件中的命令目录写入到历史命令缓存中,也可以将缓存中的历史命令存入历史文件中。

(1)语法

    history [option] keyword

(2)选项

  -c:  清空命令历史

  -d:  删除历史中指定的命令;

   #:  显示最近的# 条历史

  -a:  追加本次会话新执行的命令历史列表至历史文件

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

  -r:  将历史文件中的命令读取到历史列表中

  -w:  将历史列表中的命令追加至指定的历史文件中

  -p:  展开历史参数成多个行,但不存入历史列表中

  -s:  展开历史参数成一行,追加到历史列表中

(3)说明

调用历史命令

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

按上下方向键,并回车执行

按两个感叹号!!并回车执行

输入!-1并回车执行

按Ctrl+P并回车执行

!+ 字符串:表示重复最近一个以“字符串”开头的命令

!+ n : 表示执行历史缓存中的第n条命令(由1开始,-n表示倒数第n个命令)

!+ ?+ 字符串:表示执行前一个包含“字符串”的命令

使用上下键来浏览之前输入的命令

Ctrl +r:在命令历史中搜索命令

重新调用前一个命令中最后一个参数,有三种方法:

!+$ 组合键

ESC + .:先按ESC键松开后再按“.”键

ALT + . :同时按下ALT键和 . 键

cmd !^ : 利用上一个命令的第一个参数做cmd(指其他命令) 的参数

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

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

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

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

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

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

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

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

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

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

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

(4)命令历史相关的环境变量

v HISTSIZE :命令历史记录的条数

HISTFILE :指定历史文件,默认为~/.bash_history

HISTFILESIZE :命令历史文件记录历史的条数

HISTTIMEFORMAT=“%F %T”显示时间

HISTIGNORE=“str1:str2:… “  忽略string1,string2 历史,即不在历史文件和历史缓存中显示。

控制命令历史的记录方式:HISTCONTROL

ignoredups :忽略重复的命令;连续且相同方为“重复”

        ignorespace :忽略所有以空白开头的命令

ignoreboth :介于ignoredups, ignorespace之间

erasedups: 删除重复命令

export  变量名=“值”

(5)历史命令的相关文件,这些文件可以按需修改

/etc/profile :可以修改过history命令的默认设定,并对所有用户有效

~/.bash_profile:可以修改过history命令的默认设定,只对当前用户有效

~/.bash_history:正常退出系统登录后,保存历史缓存中的命令

6)示例

    清空缓存中的历史命令

       history -c

 显示最近10条历史命令

 history 10

 将 HISTCONTROL 设置为 ignorespace

 export HISTCONTROL=ignorespace