History

1、  命令行历史:保存你输入的命令历史,可以用它来重复执行命令;当登陆shell时,系统会读取命令行历史文件中记录下来的命令,保存命令历史记录的文档存放于 ~/.bash_histoty;登陆进shell后新执行的命令只会记录在缓存中,这些命令会在用户退出时“追加”至命令历史文件中。

1)查看缓存中的命令行历史记录:

 wKiom1eaBtrBEEPgAABCBjsDEDs147.png-wh_50

2)查看命令行历史文件中的命令行历史记录:

wKiom1eaBuqTvefJAAA6Vkrj-H0459.png-wh_50


2、  命令行历史记录的使用:

   2-1、重复使用前一个命令:

      (1)使用上方向键

      (2)按!!

      (3)按!-1

      (4)按Ctrl+p

   2-2、!字符串:重复前一个以“字符串”开头的命令

   2-3、!num:按照history命令输出中的序号重复对应命令

   2-4、!?字符串:重复前一个包含abc的命令

   2-5、!-n:重复n个命令之前的那个命令

 

如果是忘记了前面执行过的命令,可以进行搜索:

方法:按住Ctrl+r  ,再输入相应的字符进行搜一搜,结果如下

wKioL1eaBvuz1NguAAA0qgUPvLg196.png-wh_50

3、  重复调用前一个命令的最后一个参数:

1!$

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

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

4、  调用历史参数:

1)利用上一个命令的第一个参数做cmd的参数:#cmd !^

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

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

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

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

6)调用第n个命令的第一个参数:!n:$

7)调用第n个命令的第一个参数:!m:n

8)调用第n个命令的第一个参数:!n:*

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

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

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

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

 

5、  History的选项使用:

History

 -c  清空命令历史(完全清除命令历史记录:先删除/.bash_history

,再清空历史)

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

显示最近的#条命令

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

   -n  读取历史文件中未读过的行到历史列表(让另外一个虚拟终端同账号下使用的命令追加到历        史文件里面的命令更新到当下的终端)

   -r   读取历史文件附加到历史列表(将历史文件全部再次读取一次,会出现重复)

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

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

   -s  展开历史参数成一行,附加在历史列表后(相当于伪造命令)

6、   命令历史相关环境变量:

HISTSIZE:命令历史记录的条数

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

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

HISTTIMEFORMAT”%F  %T  ” 显示时间

HISTINGNORE”str1str2:……忽略string1string2历史(如果想带str1str2等所有执行的命令都不显示,则在其后添加*)

修改配置文件,让其永久生效:/etc/profile(所有用户共用);/home/.bash_profile(个人用户配置)

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

环境变量:HISTCONTROL

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

wKioL1eaBxTRX2tZAAAe7Lq56KE743.png-wh_50

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

IgnorebothIgnoredupsIgnorespace

erasedups:删除重复的命令

export变量名=“值”

存放在/etc/profile(修改配置文件,永久生效) ~/.bash_history(个人用户配置)