网站开发人员配备,如何更改wordpress模板,做外贸常用的网站有哪些,长沙品质网站建设优点目 录 一、history命令介绍
1、history命令是什么#xff1f;
2、history的主要功能
二、history命令的用法
1、语法
2、选项说明
3、命令实例
三、history和历史记录文件bash_history
四、history命令的相关配置
1#xff0c;命令带时间展示-HISTTI…目 录 一、history命令介绍
1、history命令是什么
2、history的主要功能
二、history命令的用法
1、语法
2、选项说明
3、命令实例
三、history和历史记录文件bash_history
四、history命令的相关配置
1命令带时间展示-HISTTIMEFORMAT
2命令行数大小-HISTSIZE
3、设置命令保存的行数
4、历史记录文件名称-HISTFILE
5管理历史记录的变量 -HISTCONTROL
6、历史记录中需要忽略的命令-HISTIGNORE
7当前shell开启或关闭历史记录功能
四、编写bash脚本从记录文件中提取history命令 一、history命令介绍
1、history命令是什么 history命令在Linux系统中用于显示和管理用户在command line界面执行过的命令历史记录。这个命令会读取历史命令文件中的目录到历史命令缓冲区同时也会将历史命令缓冲区中的目录写入命令文件。 2、history的主要功能
history有以下几个主要功能
显示历史命令当用户在命令行中输入history并按下回车键时会显示出当前用户之前执行过的所有命令的列表。这些命令按照执行的时间顺序排列最新的命令显示在最下面。执行历史命令在命令行中可以使用符号!加上命令的编号来快速执行历史命令。例如!100会执行历史记录中的第100条命令。此外!!命令可以快速执行上一条命令。管理历史命令history命令还提供了一些选项允许用户管理他们的命令历史记录。例如 history -c命令可以清除所有的命令历史记录history -w命令将当前的命令历史记录写入到历史文件中。
另外环境变量HISTSIZE控制了内存中能够存储的历史命令的数量默认值是1000。
查询命令执行时间虽然默认不显示命令的执行时间但history命令实际上已经记录了这些信息。如果需要查看命令的执行时间可以通过设置环境变量HISTTIMEFORMAT来实现。按用户分别记录命令每个用户在都有自己的命令历史记录这些记录保存在用户主目录下的.bash_history文件中。只有root用户才能查看其他用户的命令历史记录。 二、history命令的用法 以下是history命令的详细语法说明
1、语法 history [选项] [参数]
2、选项说明
选项有如下
-c清空命令历史。 此选项会清除当前会话中的命令历史记录但不会影响保存在.bash_history文件中的记录。
-d offset删除历史记录中指定的第offset个命令。 offset表示命令在历史列表中的位置。
n 或 -n显示最近的n条历史命令。 如果不指定n则默认显示当前会话中的所有历史命令。注意这里的n应直接跟在history命令后面而不是作为选项参数。
-a追加本次会话新执行的命令历史列表至历史文件。 这会将当前会话中新增的命令追加到.bash_history文件中。
-r读历史文件附加到历史列表。 此选项会将保存在.bash_history文件中的命令历史读取并加载到当前会话的历史列表中。
-w保存历史列表到指定的历史文件。 此选项会将当前会话的命令历史保存到指定的文件中通常是.bash_history文件。
-p展开历史参数成多行但不存在历史列表中。 此选项允许用户以多行形式查看历史参数但并不会将这些参数添加到历史列表中。
-s展开历史参数成一行附加在历史列表后。 此选项会将历史参数以单行形式附加到历史列表的末尾。 history命令的选项和参数可能会因不同的操作系统版本或shell类型而有所差异。上述是基于常见的Bash shell进行说明的。
3、命令实例 History的命令介绍很多后面也会讲到一些命令。这里就不再累述了。若大家有兴趣可以留言给我后期我可以再整理一下。
三、history和历史记录文件bash_history .bash_history文件是Bash shell默认保存命令历史的文件通常位于用户主目录下。
1、当用户登录shell时系统会将该文件中的命令历史读取到内存缓冲区中以供history命令查询和显示。用户所操作的所有 Linux 命令都会记录在 缓冲区 中。包括 history 命 令所执行的历史命令管理都是在操作 缓冲区 而不是直接操作 .bash_history 文件。
2、当用户退出 Shell比如按下 CtrlD 时Shell 进程会把历史记录缓冲区的内容写回到 .bash_history 文件中去。 .bash_history文件中的命令历史记录是持久保存的而history命令操作的是当前会话内存中的历史列表。因此使用history -c清空当前会话历史记录并不会影响.bash_history文件中的记录。 四、history命令的相关配置 1命令带时间展示-HISTTIMEFORMAT [rootlocalhost ~]# export HISTTIMEFORMAT%F %T 2命令行数大小-HISTSIZE
#若将HISTSIZE设置为0代表禁用history [rootlocalhost ~]# export HISTSIZE0 [rootlocalhost ~]# export HISTSIZE100000 3、设置命令保存的行数
超过的话会自动删除最老的数据 [rootlocalhost ~]# export HISTFILESIZE8000 4、历史记录文件名称-HISTFILE
# 设置历史记录的文件名称为/home/history.log [rootlocalhost ~]# export HISTFILE/home/history.log 5管理历史记录的变量 -HISTCONTROL
HISTCONTROL 是一个环境变量它决定了如何管理历史记录。它的值可以是以下几种 ignorespace忽略以空格开头的命令。 ignoredups忽略连续重复的命令。 ignoreboth忽略以空格开头和连续重复的命令。 erasedups删除连续重复的命令只保留一个。 ignoreallbutlast忽略所有命令只保留最后一个。 比如
# 去除连续的相同命令的条目只保留一个。
[rootlocalhost ~]# export HISTCONTROLignoredups
# 在不想被记住的命令前面输入一个空格-就不会被记住
[rootlocalhost ~]# export HISTCONTROLignorespace 6、历史记录中需要忽略的命令-HISTIGNORE
HISTIGNORE 是一个环境变量用于指定在历史记录中需要忽略的命令。比如
#忽略pwd、ls命令 [rootlocalhost ~]# export HISTIGNOREpwd:ls: 7当前shell开启或关闭历史记录功能 set o history 开启命令会被记录到历史记录中 set -o history 关闭。命令不会被记录到历史中 五、编写bash脚本从记录文件中提取history命令 查看了发现.bash_history文件的格式包含时间戳和命令混在一起不好看大概格式如下 #1704944134 tcpdump -i eth0 host 110.43.204.73 -w /home/20240111.pcap #1704972568 date 因此编写了个bash脚本从这个文件提取这些时间戳和命令方便查看。代码如下
#!/bin/bash # 检查输入参数
if [ $# -ne 1 ]; then echo Usage: $0 path_to_.bash_history_file exit 1
fi # 检查参数文件是否存在
if [ ! -f $1 ]; then echo Error: File $1 does not exist. exit 1
fi # 读取.bash_history文件并输出命令编号和命令
line_number1
while IFS read -r line; do # 检查行是否以#开头如果是则认为是时间戳 if [[ $line ~ ^\#[0-9]$ ]]; then timestamp${line:1} # 去掉#保留时间戳 else # 输出命令编号和命令 echo $line_number $line ((line_number)) fi
done $1脚本演示 [rootecs-52a1 121yunwei]# [rootecs-52a1 121yunwei]# [rootecs-52a1 121yunwei]# ./con2.sh /root/.bash_history 1 rpm -qa|grep -i mysql 2 Find / -name mysql 3 find / -name mysql 4 rm -rf /usr/share/selinux/targeted/default/active/modules/100/mysql 5 rm -rf /var/lib/selinux/targeted/active/modules/100/mysql 6 rm -rf /etc/my.cnf 7 cat /etc/my.cnf 8 rpm -qa|grep -i mysql 9 rpm -qa|grep -i mysql 10 rpm -qa|grep -i maridb 11 systemctl stop firewalld 12 systemctl disable firewalld 13 vi /etc/selinux/config 14 netstat -ano | grep 8066 15 netstat -ano|grep 8066 16 netstat -ano|grep 8067 17 netstat -ano|grep 6379 18 netstat -ano|grep 5060 19 netstat -ano|grep 8083 20 netstat -ano|grep 3306 21 cd /home 22 df -h 23 du -h --max-depth0 24 du -hd0 25 df -hl 26 chmod 777 ivms_deploy.sh 27 sh ivms_deploy.sh 28 exit [rootecs-52a1 121yunwei]# [rootecs-52a1 121yunwei]# 注意 1命令格式为./con2.sh /root/.bash_history 后面的是读取的bash_history文件的完整路径
2输入的几个命令没有看到因为这些命令还在缓冲区中还没有写到bash_history文件中。