linux基本功之历史记录history命令实战

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: linux基本功之历史记录history命令实战

系列文章目录

命令1: linux基本功系列-ls命令实战

命令2: linux基本功系列之echo命令实战

命令3:linux基本功之历史记录history命令实战

前言

大家好,我是沐风晓月,一个爱学习的英专在读生

平时除了吃饭,睡觉,都是学习哦,快关注我,要不然以后没位置了。
在这里插入图片描述
今天我们一起来看看历史记录命令history,以及一些常用的快捷键,不得不说,快捷键掌握起来就好好用。
:smile:

当然我们平时敲的命令都会被历史记录保存下来,我们一起来学习下:


`

一、history作用

  • 用于显示历史记录和执行过的指令命令
  • 当登录shell或者是退出的时候会自动进行读取和存储

二、history常用语法

1. 常用语法

# history (选项)(参数)

2. 常用参数

代码如下(示例):

n 显示最近的N条记录
-a 将历史命令缓冲区中命令写入历史命令文件中
-c 将目前的shell中的所有 history 内容全部消除 (并非真的删除)
-r 将历史命令文件中的命令读入当前历史命令缓冲区
-w 将当前历史命令缓冲区命令写入历史命令文件中
-d 删除历史记录的指定行

3. 部分案例

3.1 获取历史记录的最新两条记录

[root@mufenggrow ~]# history 2
    9  cd
   10  history 2

这种方式获取的最新两条记录,也会把最后一条命令算上了。

3.2 清除全部历史记录

-c 参数是清空所有历史记录

[root@mufenggrow ~]# history -c
[root@mufenggrow ~]# history
    1  history
[root@mufenggrow ~]# 

这种方式类似 与clear,并不会把文件中的历史记录删除,如果要真正的历史记录,需要用本文中第4条关于history的配置文件。

3.3 删除某一行数据

比如删除第358行数据

[root@mufenggrow ~]# history -d 358

4. 关于history的配置文件

所有我们用history命令看到的历史记录,都默认保存在:
~/.bash_history
如果是root用户就是在/root/.bash_history

直接删掉这个文件会清除所有历史记录,再登陆系统会自动重新生成这个文件。

在这里插入图片描述
Linux 命令的历史记录,会持久化存储,默认位置是当前用户家目录的 .bash_history 文件。

当 Linux 系统启动一个 Shell 时,Shell 会从 .bash_history 文件中,读取历史记录,存储在相应内存的缓冲区中。

我们平时所操作的 Linux 命令,都会记录在 缓冲区 中。包括 history 命令所执行的历史命令管理,都是在操作 缓冲区 ,而不是直接操作 .bash_history 文件。

当我们退出 Shell,比如按下 Ctrl+D 时,Shell 进程会把历史记录缓冲区的内容,写回到 .bash_history 文件中去。

5. 隐藏历史记录实战

想要隐藏某条历史记录,会用到set +o

set +o history 表示开始隐藏
set -o history 表示结束隐藏

[root@mufenggrow ~]# set +o history   ## 设置开启隐藏
[root@mufenggrow ~]# mysql -uroot -p123456
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

## 这里的MySQL报错是因为没有MySQL服务

[root@mufenggrow ~]# history 3
    1  history
    2  history -d 358
    ## 查看历史记录发现没有刚才执行的带有密码的MySQL命令
[root@mufenggrow ~]# set -o history 
## 取消history
[root@mufenggrow ~]# mysql -uroot -p123456
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

[root@mufenggrow ~]# history 3
    3  mysql -uroot -p123456
    4  histroy 3
    5  history 3
## c此时发现有刚才执行过的MySQL命令

6. linux命令审计

有时候我们需要对 Linux 系统做审计,那为历史记录添加时间戳,就非常有用。

6.1 显示历史记录的时间

export HISTTIMEFORMAT='%F %T '

[root@mufenggrow ~]# export HISTTIMEFORMAT='%F %T '
[root@mufenggrow ~]# ping www.baidu.com
PING www.baidu.com (110.242.68.3) 56(84) bytes of data.
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=1 ttl=52 time=26.4 ms
^C
--- www.baidu.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 26.470/26.470/26.470/0.000 ms
[root@mufenggrow ~]# history 3
   17  2023-01-11 16:46:52 export HISTTIMEFORMAT='%F %T '
   18  2023-01-11 16:46:57 ping www.baidu.com
   19  2023-01-11 16:47:03 history 3
[root@mufenggrow ~]# 

6.2 控制历史记录的总数

echo $HISTSIZE 查看历史记录总数


[root@mufenggrow ~]# echo  $HISTSIZE
1000

[root@mufenggrow ~]# export HISTISIZE=100

做审计的时候我们适当把记录总数调大

想要永久生效:

echo  "export HISTSIZE=10000" >>  ~/.bash_profile
source ~/.bash_profile

总结

今天我们一起探讨的是历史记录的命令history,后续我们在做审计的时候用到的比较多,平时可以直接执行hsitory查看历史记录也比较方便。

好了,下次再见了,我是沐风晓月。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
22 3
|
5天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
17 2
|
5天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
23 3
|
8天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
33 6
|
8天前
|
缓存 网络协议 Linux
Linux ip命令常用操作
Linux的 `ip`命令是一个强大且灵活的网络管理工具,能够执行从基本的网络接口配置到高级的路由和VLAN管理等多种操作。通过熟练掌握这些常用操作,用户可以更加高效地管理和配置Linux系统的网络环境。无论是在日常管理还是故障排除中,`ip`命令都是必不可少的工具。
11 2
|
4月前
|
Linux
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
|
4月前
|
Linux
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数
|
4月前
|
Linux
Linux02---命令基础 Linux命令基础, ls命令入门,ls命令参数和选项,命令行是一种以纯字符操作系统的方式,command命令本身,options命令的细节行为,parameter命令的
Linux02---命令基础 Linux命令基础, ls命令入门,ls命令参数和选项,命令行是一种以纯字符操作系统的方式,command命令本身,options命令的细节行为,parameter命令的
|
6月前
|
安全 网络协议 Linux
【专栏】Linux系统中ping命令的使用,包括其基本语法、输出信息、常用参数及高级用法
【4月更文挑战第28天】本文详细介绍了Linux系统中ping命令的使用,包括其基本语法、输出信息、常用参数及高级用法。通过ping,用户可测试网络连通性、诊断故障及评估性能。此外,文章还讨论了ping在不同协议、模拟网络环境及与其他命令结合使用时的场景。注意防火墙和网络环境可能影响ping结果,理解错误信息有助于网络问题排查。熟练掌握ping命令,能助你成为Linux网络专家。不断学习和实践,提升网络技能,为构建稳定网络环境贡献力量。
528 0
|
6月前
|
Kubernetes Linux Shell
Linux |奇怪的知识---complete命令---你不知道的命令参数补全---kubectl命令的参数补全
Linux |奇怪的知识---complete命令---你不知道的命令参数补全---kubectl命令的参数补全
152 0