history命令,-r和-w
.bash_history
最大1000条
变量HISTSIZE
/etc/profile中修改
HISTTIMEEFORMAT="%Y%m%d %H:%M:%S"
永久保存chattr +a ~/.bash_history
!!
!n
!word
[root@localhost ~]#grep -rn "HISTFILESIZE" #命令或变量找不见时可以搜索
[root@localhost ~]#history -r #将文件中的命令记忆读出到当前内存,一般登录时候会自定进行
[root@localhost ~]#history -w #将目前内存中的命令写入到history文件,一般登出时候会自定进行
[root@localhost ~]# ls /root/.bash_history
[root@localhost ~]# cat !$ #关机再保存,‘!’, 表示执行上一条指令
[root@localhost ~]# echo $HISTSIZE #history 命令如果未改动过环境变量,默认可以把最近1000条命令历史打印出来。 1000
[root@localhost ~]# history -c #清空内存命令,不能清空配置文件
[root@localhost ~]# vim /etc/profile #然后使用/HISTSIZE搜索HISTSIZE,修改HISTSIZE大小为5000
[root@localhost ~]# source /etc/profile #使命令生效,或者重启终端
[root@localhost ~]# echo $HISTSIZE #5000
[root@localhost ~]# HISTTIMEFORMAT="%Y%m%d %H:%M:%S"
[root@localhost ~]# echo $HISTTIMEFORMAT #同样可以在/etc/profile 里面设置%Y%m%d %H:%M:%S
[root@localhost ~]# history
1 20180813 19:49:09cd
2 20180813 19:49:09ls /root
3 20180813 19:49:09mkdir /root/.ssh
......
[root@localhost ~]# chattr +a ~/.bash_history #a权限,只能追加,不能删除,就不用设置HISTSIZE
1) !! 执行和显示上一次命令的结果
[root@localhost ~]# pwd
/root
[root@localhost ~]# !!
pwd
/root
2) !n 这里的n是数字,表示执行命令历史中第n条指令
[root@localhost ~]# history |grep 1002
1002 pwd
1015 history |grep 1002
[root@localhost ~]# !1002 #例如 !1002 表示执行命令历史中第1002个命令;
pwd
/root
3) !字符串 (字符串大于等于1),执行以字符串开头的最近命令
[root@localhost ~]# !pw 例如 !pw 表示执行命令历史中最近一次以 ‘pw’ 为开头的指令。
pwd
/root
补充:
source命令:重新执行刚修改的初始化文件,使之立即生效,如:source /etc/profile #source filename 或 . filename
source filename 与 sh filename 及./filename执行脚本的区别在那里呢?
1.当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所有"."是用来表示当前目录的。 #因为脚本下就是第一句话就是创建一个子shell #!/bin/bash
2.sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。
3.source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。
举例说明:
1.新建一个test.sh脚本,内容为:A=1
2.然后使其可执行chmod +x test.sh
3.运行sh test.sh后,echo $A,显示为空,因为A=1并未传回给当前shell
4.运行./test.sh后,也是一样的效果 # 开头#!/bin/bash
5.运行source test.sh 或者 . test.sh,然后echo $A,则会显示1,说明A=1的变量在当前shell中
w命令-->用来查看登录者的信息及他们的行为
[root@localhost ~]# w
20:44:12 up 56 min, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 19:48 56:12 0.05s 0.05s -bash
root pts/0 192.168.224.1 19:49 4.00s 0.38s 0.01s w
备注:
1) 区别于who命令,w命令不仅可以看到登录服务器的用户信息,而且可以看到这些用户做了什么
2) who am i命令,显示出自己在系统中的用户名,登录终端,登录时间
3) whoami命令,显示自己在系统中的用户名
4) logname命令,可以显示自己初次登录到系统中的用户名,主要识别sudo前后情形
5) last命令,查看最近1个月用户登录服务器的情况
6) tty命令,来查看所连接的设备或终端