Linux centos stream 9 history

很多命令的介绍,大多数是讲命令的语法、命令有多少选项、可用什么参数、常用案例是什么。真正讲命令执行的底层逻辑的很少。

本文不再介绍常规知识点,仅就history命令执行的底层逻辑与root用户如何查看普通用户的历史命令介绍一下。

首先,我们要了解的是:程序(进程)运行在内存中;配置文件、存盘文件保存在外存(磁盘)中;当进程需要外部文件时,要加载文件到内存中,然后显示、修改、使用。而加载文件实质是复制文件数据到内存中(更专业的术语是映射)。

一、底层逻辑

1.基础

全面理解history命令,需要掌握几个重要概念。

缓存——从广义上讲,缓存存在于电脑的许多配件上,比如CPU有一级、二级甚至三级缓存。缓存技术的应用,可以提升硬件的数据读取和处理速度。硬盘的缓存主要起三种作用:一是预读取;二是对写入动作进行缓存;第三个作用就是临时存储最近访问过的数据。

本文称后续的用于保存历史命令的缓存区称为历史缓存

内存——计算机内存是计算机的重要部件,它用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。内存是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行。

history保存文件——默认情况下,命令历史被储存在.bash_history文件中。可以通过环境变量来改变为其他位置。本文称保存历史命令的文件为历史文件

history配置文件——能影响history功能的配置文件有多个,主要有/etc/profile、~/.bashrc和~/.bash_profile。

history的默认的,只会输出命令的序号以及命令。这时我们就需要对history进行一些配置,让它报告(显示)命令执行的更多信息。

history环境变量——和history相关的环境变量有很多,我们仅列出部分,供讨论。

HISTSIZE;HISTFILE;HISTFILESIZE;HISTTIMEFORMAT;ISTIGNORE;HISTCONTROL

2.执行逻辑

命令执行的信息按时间保存在shell程序的历史缓存中;

启动一个终端会话时,占用一定大小的内存,在其中还同时创建了一段缓存区(历史缓存——及时记录会话中执行过的命令)。

一个会话对应一个历史缓存,多个会话的历史缓存相互独立。

当启动一个会话时,历史缓存会自动加载历史文件内容。

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_36142959

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值