Linux基础(2)--history命令
shell的特性之命令历史:
bash保存的过去曾经执行过的命令的列表;
当前shell进程的保存在缓冲区中;
缓冲区中的命令会在shell退出时保存至文件中, 用户家目录中的 ~/.bash_history
history命令
[root@centos6 ~]# history 1 ifconfig 2 shutdown -h now 3 df 4 cd /media/VMware\ Tools/ 5 ls 6 cd VMwareTools-9.6.1-1378637.tar.gz 7 cp VMwareTools-9.6.1-1378637.tar.gz /testdir/ 8 cd /testdir/ 9 ls /var. .............. 218 shutdown -c 219 whatis history 220 whatis whereis 221 whatis which 222 passwd 223 shutdown -r now 224 history
以上可以看出:在命令行中我们键入history命令,可以显示我们曾经执行过的命令
对于命令行历史,我们可以使用一些快捷键对其进行操作
1、!#: #为命令历史列表中的命令编号;可用执行第#条命令;
[root@centos6 ~]# !5 等同于 [root@centos6 ~]# ls
2、!!: 执行上一条命令;
[root@centos6 ~]# !! 等同于 [root@centos6 ~]# history
3、!-#: 执行命令历史列表中的倒数第#条命令;
[root@centos6 ~]# !-3 等同于 [root@centos6 ~]# passwd
4、!string: 执行命令历史列表中的最近一次以string开头的命令;
[root@centos6 ~]# !shut 等同于 [root@centos6 ~]# shutdown -h now
5、!?string:执行迷路历史列表中的最近一次包含string字符串的命令;
[root@centos6 ~]# !?sswd 等同于 [root@centos6 ~]# passwd
6、!$: 引用上个命令的最后一个参数,等同于 ESC, .
7、可以使用up(向上)和down(向下)键来上下浏览从前输入的命令
8、按Ctrl+p 并回车执行前一个命令
调用历史参数的方法:
1、#cmd !^ : 利用上一个命令的第一个参数做cmd的参数
2、#cmd !$ : 利用上一个命令的最后一个参数做cmd的参数
3、#cmd !* : 利用上一个命令的全部参数做cmd的参数
4、#cmd !:n : 利用上一个命令的第n个参数做cmd的参数
5、#!n:^ 调用第n条命令的第一个参数
6、#!n:^ 调用第n条命令的第一个参数
7、#!m:n 调用第m条命令的第n个参数
8、#!n:* 调用第n条命令的所有参数
9、#!string:^ 从命令历史中搜索以string 开头的命令,并获取它的第一个参数
10、#!string:$ 从命令历史中搜索以string 开头的命令,并获取它的最后一个参数
11、#!string:n 从命令历史中搜索以string 开头的命令,并获取它的第n个参数
12、#!string:* 从命令历史中搜索以string 开头的命令,并获取它的所有参数
13、键入ctrl-r来在命令历史中搜索命令
history命令常用选项:
history [-c] [-d offset] [n]
history -anrw[filename]
history -psarg[arg...]
-c: 清空命令历史
[root@centos6 log]# history -c [root@centos6 log]# history 1 history
-d: 删除历史中指定的命令;
#: 显示最近的#条历史
-a: 追加本次会话新执行的命令历史列表至历史文件
-n: 读历史文件中未读过的行到历史列表
-r: 读历史文件附加到历史列表
-w: 保存历史列表到指定的历史文件
-p: 展开历史参数成多个行,但不存在历史列表中
-s: 展开历史参数成一行,附加在历史列表后
history命令历史相关的环境变量
1、HISTSIZE:命令历史记录的条数;
2、HISTFILE:指定历史文件,默认为~/.bash_history;
3、HISTFILESIZE:命令历史文件记录历史的条数;
4、HISTTIMEFORMAT=“%F %T“ 显示时间
5、HISTIGNORE=“str1:str2:… “ 忽略string1,string2历史
6、控制命令历史的记录方式:
环境变量:HISTCONTROL
ignoredups:忽略重复的命令;连续且相同方为“重复”
ignorespace:忽略所有以空白开头的命令
ignoreboth:ignoredups, ignorespace
erasedups:删除重复命令
[root@centos6 ~]# echo $HISTSIZE 1000 [root@centos6 ~]# echo $HISTFILE /root/.bash_history [root@centos6 ~]# echo $HISTFILESIZE 1000 [root@centos6 ~]# echo $HISTTIMEFORMAT [root@centos6 ~]# HISTTIMEFORMAT="%F %T " [root@centos6 ~]# echo $HISTTIMEFORMAT %F %T [root@centos6 ~]# echo $HISTIGNORE [root@centos6 ~]# echo $HISTCONTROL ignoredups [root@centos6 ~]# history 1 2016-07-27 06:43:03 history 2 2016-07-27 06:44:27 cd 3 2016-07-27 06:44:34 echo $HISTORY 4 2016-07-27 06:44:42 echo $HISTSIZE 5 2016-07-27 06:44:47 echi $HISTFILE 6 2016-07-27 06:44:55 echo $HISTSIZE 7 2016-07-27 06:45:01 echo $HISTFILE 8 2016-07-27 06:45:10 echo $HISTFILESIZE 9 2016-07-27 06:45:33 echo $HISTTIMEFORMAT 10 2016-07-27 06:45:53 HISTTIMEFORMAT="%F %T " 11 2016-07-27 06:45:59 echo $HISTTIMEFORMAT 12 2016-07-27 06:46:21 echo $HISTIGNORE 13 2016-07-27 06:46:47 echo $HISTCONTROL 14 2016-07-27 06:47:06 history
上述环境变量存放在/etc/profile 或~/.bash_profile
转载于:https://blog.51cto.com/sixijie123/1830822