1. 命令行历史:

在命令行中输入命令,shell会记录每一个执行过的历史在内存中,当用户退出时,shell会将记录的命令历史追加到当前用户的~/.bash_history文件中。当用户再次登录时,shell会读取该用户家目录的.bash_history文件

2. history命令:

history [-c] [-d offset] [n]

history -anrw [filename]

history -ps arg [arg...]

-c: 清空命令历史

-d offset: 删除历史中指定的第offset个命令

n: 显示最近的n条历史

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

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

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

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

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

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

3. 历史命令的用法:

使用上下键浏览从前执行的命令,按回车执行

ctrl-r来在命令历史中搜索命令

reverse-i-search`’:

Ctrl+g:从历史搜索模式退出 

要重新调用前一个命令中最后一个参数

!$ 表示

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

Alt+ .(按住Alt键的同时点击 . 键)

重复前一个命令

① 按上键并回车

② 输入!!并回车

③ 输入!-1并回车

④ Ctrl+p并回车

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

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

Ctrl + j 执行当前命令

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

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

!string 重复前一个以“string”开头的命令

!?string 重复前一个包含string的命令

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

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

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

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

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

4. 调用历史参数:

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 !string:^ 从命令历史中搜索以 string 开头的命令,并获取它的第一个参数

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

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

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

5. 命令历史相关环境变量:

HISTSIZE:命令历史记录的条数

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

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

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

      HISTIGNORE=“str1:str2*:… “ 忽略str1命令,str2开头的历史

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

环境变量:HISTCONTROL

ignoredups 默认,忽略重复的命令,连续且相同为重复

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

ignoreboth 相当于ignoredups, ignorespace的组合

erasedups 删除重复命令

export 变量名="

存放在 /etc/profile ~/.bash_profile