history
命令行历史:
保存你输入的命令历史。可以用它来重复执行命令
登录shell时,会读取命令历史文件中记录下的命令~/.bash_history
登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”至命令历史文件中
选项:
-c: 清空列表 清空的是内存可以用 -r再读回来
-d #: 删除指定的历史命令 可以一次删多条 命令号 条数
-a: 追加当前会话的命令历史至历史文件中去;
-w: 把历史列表中的所有命令追加到文件中,也可以后面加文件路径,保存到别的文件中
history # 显示最近的多少条命令
-s以单条记录追加 ARG 到历史列表中(伪造历史)
-r 可以把文件的内容读入历史文件中
# 最近的#条记录
history快捷方式:
!#: #为命令历史列表中的命令编号;可用执行第#条命令;
!!: 执行上一条命令;
!-#: 执行命令历史列表中的倒数第#条命令;
!string: 执行命令历史列表中的最近一次以string开头的命令;
!$: 引用上个命令的最后一个参数; ESC后松开再按 .
ctrl+r [想要搜索的内容] 可以在当前搜索并显示以前的命令历史
调用历史参数
!n:^ 调用第n条命令的第一个参数
!n:$ 调用第n条命令的最后一个参数
!m:n 调用第m条命令的第n个参数
!n:* 调用第n条命令的所有参数
n可以是数字也可以是字符
命令历史相关的环境变量
HISTSIZE:命令历史中可以保存的命令的个数;
HISTFILE: 命令历史文件;
HISTFILESIZE:命令历史文件可以保存的命令的个数;
HISTCONTROL: 控制命令历史的生成;
HISTCONTROL=ignoredups: 忽略记录重复的命令;连续的相同命令才为重复;
HISTCONTROL=ignorespace: 不记录以空白字符开头的命令;
HISTCONTROL=ignoreboth: 同时具有上面两种特性
也可以HISTCONTROL="ignoredups:ignorespace"中间用冒号隔开
注意:这种修改只对当前shell有效!
history其他的几种用法
1、使用 HISTTIMEFORMAT 显示时间戳
HISTTIMEFORMAT=“%F %T“ %F表示日期 %T表示时间
[root@VM_18_121_centos ~]# HISTTIMEFORMAT="%F %T "
[root@VM_18_121_centos ~]# history
1 2016-07-27 09:56:57
2 2016-07-24 22:47:33 yum update -y
3 2016-07-24 22:50:20 yum install -y httpd
4 2016-07-24 22:51:57 mkdir ~/confbak
2、使用 Ctrl+R 搜索命令历史
(reverse-i-search)`tr': yum -y install php-gd php-ldap php-odbc
(reverse-i-search)`tr': tree -CL 2 /dev/
3、使用 HISTSIZE 控制历史命令记录的总行数
[root@VM_18_121_centos ~]# HISTSIZE=1001
[root@VM_18_121_centos ~]# echo $HISTSIZE
1001
只针对当前shell有效
或者在[root@VM_18_121_centos ~]# vim ~/.bash_profile 追加
HISTSIZE=1001
HISTFILESIZE=1001
只针对当前用户有效
4、使用 HISTIGNORE 忽略历史中的特定命令
[root@VM_18_121_centos ~]# export HISTIGNORE="history:ls:ls -l"
转载于:https://blog.51cto.com/11741220/1830573