当前位置: 首页 > news >正文

History命令解释,及一个相关的bash脚本(如何编写脚本程序从记录文件中提取history命令)

目                录

一、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有以下几个主要功能:

  1. 显示历史命令:当用户在命令行中输入history并按下回车键时,会显示出当前用户之前执行过的所有命令的列表。这些命令按照执行的时间顺序排列,最新的命令显示在最下面。
  2. 执行历史命令:在命令行中,可以使用符号!加上命令的编号来快速执行历史命令。例如,!100会执行历史记录中的第100条命令。此外,!!命令可以快速执行上一条命令。
  3. 管理历史命令:history命令还提供了一些选项,允许用户管理他们的命令历史记录。例如,
    1. history -c命令可以清除所有的命令历史记录,
    2. history -w命令将当前的命令历史记录写入到历史文件中。

另外,环境变量HISTSIZE控制了内存中能够存储的历史命令的数量,默认值是1000

  1. 查询命令执行时间:虽然默认不显示命令的执行时间,但history命令实际上已经记录了这些信息。如果需要查看命令的执行时间,可以通过设置环境变量HISTTIMEFORMAT来实现。
  2. 按用户分别记录命令:每个用户在都有自己的命令历史记录,这些记录保存在用户主目录下的.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,比如按下 Ctrl+D 时,Shell 进程会把历史记录缓冲区的内容,写回到 .bash_history 文件中去。

        .bash_history文件中的命令历史记录是持久保存的,而history命令操作的是当前会话内存中的历史列表。因此,使用history -c清空当前会话历史记录并不会影响.bash_history文件中的记录。

四、history命令的相关配置

1,命令带时间展示-HISTTIMEFORMAT

        [root@localhost ~]# export HISTTIMEFORMAT='%F %T '

2,命令行数大小-HISTSIZE

#若将HISTSIZE设置为0,代表禁用history

        [root@localhost ~]# export HISTSIZE=0

        [root@localhost ~]# export HISTSIZE=100000

3、设置命令保存的行数

超过的话会自动删除最老的数据

        [root@localhost ~]# export HISTFILESIZE=8000

4、历史记录文件名称-HISTFILE

# 设置历史记录的文件名称为/home/history.log

        [root@localhost ~]# export HISTFILE=/home/history.log

5,管理历史记录的变量 -HISTCONTROL

HISTCONTROL 是一个环境变量,它决定了如何管理历史记录。它的值可以是以下几种:

        ignorespace:忽略以空格开头的命令。

        ignoredups:忽略连续重复的命令。

        ignoreboth:忽略以空格开头和连续重复的命令。

        erasedups:删除连续重复的命令,只保留一个。

        ignoreallbutlast:忽略所有命令,只保留最后一个。

比如:

# 去除连续的相同命令的条目,只保留一个。

[root@localhost ~]# export HISTCONTROL=ignoredups

# 在不想被记住的命令前面输入一个空格-就不会被记住

[root@localhost ~]# export HISTCONTROL=ignorespace

6、历史记录中需要忽略的命令-HISTIGNORE

HISTIGNORE 是一个环境变量,用于指定在历史记录中需要忽略的命令。比如:

#忽略pwd、ls命令

        [root@localhost ~]# export HISTIGNORE="pwd: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_number=1  
while IFS= read -r line; do  # 检查行是否以#开头,如果是,则认为是时间戳  if [[ $line =~ ^\#[0-9]+$ ]]; then  timestamp=${line:1}  # 去掉#,保留时间戳  else  # 输出命令编号和命令  echo "$line_number  $line"  ((line_number++))  fi  
done < "$1"

脚本演示:

[root@ecs-52a1 121yunwei]#
[root@ecs-52a1 121yunwei]#
[root@ecs-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-depth=0
24      du -hd0
25      df -hl
26      chmod 777 ivms_deploy.sh
27      sh ivms_deploy.sh
28      exit
[root@ecs-52a1 121yunwei]#
[root@ecs-52a1 121yunwei]#
 

注意: 1,命令格式为:./con2.sh  /root/.bash_history ,后面的是读取的bash_history文件的完整路径;

2,输入的几个命令没有看到,因为这些命令还在缓冲区中,还没有写到bash_history文件中。

相关文章:

History命令解释,及一个相关的bash脚本(如何编写脚本程序从记录文件中提取history命令)

目 录 一、history命令介绍 1、history命令是什么&#xff1f; 2、history的主要功能 二、history命令的用法 1、语法 2、选项说明 3、命令实例 三、history和历史记录文件bash_history 四、history命令的相关配置 1&#xff0c;命令带时间展示-HISTTI…...

apisix 单机部署 linux

安装etcd&#xff1a; cd /home/app rz tar -zxvf etcd-v3.5.4-linux-amd64.tar.gz cd etcd-v3.5.4-linux-amd64 vim start.sh内容&#xff1a; #!/bin/sh nohup etcd --name infra0 --initial-advertise-peer-urls http://127.0.0.1:2380 \--listen-peer-urls http://127.0.…...

Redis 面试题 | 06.精选Redis高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

2008年苏州大学837复试机试C/C++

2008年苏州大学复试机试 题目 编写程序充成以下功能: 一、从键盘上输入随机变量x的 10个取样点。X0&#xff0c;X1—X9 的值; 1、计算样本平均值 2、判定x是否为等差数列 3、用以下公式计算z的值(t0.63) 注。请对程序中必要地方进行注释 补充&#xff1a;个人觉得这个题目回忆…...

MySQL笔记-information_schema库中COLUMNS表的一些笔记

mysql建表中可以添加comment&#xff0c;也就是注释&#xff0c;这些注释会写到information_schema库的COLUMNS表中&#xff0c;可以使用如下SQL语句进行查询&#xff1a; SELECT COLUMN_NAME, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA your_data…...

归并排序模板

模板在文末&#xff0c;以下步骤方便理解记忆。 先贴一张快速排序模板步骤&#xff0c;用于对比记忆 归并排序步骤&#xff1a; &#xff08;0&#xff09;如果数组左边界L ≥ 数组右边界&#xff0c;则不需要排序&#xff0c;直接return。 &#xff08;1&#xff09;直接取…...

【NVIDIA】Jetson Orin Nano系列:安装 Qt6、firefox、jtop、flameshot

1、使用命令安装 sudo apt install qtcreator sudo apt install qt6-* sudo apt install libqt6* sudo apt install qml-qt6 sudo apt install qmlscene-qt6 sudo apt install assistant-qt6 sudo apt install designer-qt62、启动 qtcreator 3、常用工具安装 sudo apt in…...

Fastapi+Jsonp实现前后端跨域请求

文章目录 一、实现方法1.后端部分【Fastapi】2.前端部分【JS】二、测试一、实现方法 1.后端部分【Fastapi】 # coding:utf-8import json from fastapi import FastAPI, Response from fastapi.middleware.cors import CORSMiddlewareapp = FastAPI(...

MacOS受欢迎的数据库开发工具 Navicat Premium 15 中文版

Navicat Premium 15 Mac是一款数据库管理工具&#xff0c;提供了一个全面的解决方案&#xff0c;用于连接、管理和维护各种数据库系统。以下是Navicat Premium 15 Mac的一些主要功能和特点&#xff1a; 软件下载&#xff1a;Navicat Premium 15 中文版下载 多平台支持&#xff…...

helm---自动化一键部署

什么是helm?? 在没有这个helm之前&#xff0c;deployment service ingress helm的作用就是通过打包的方式&#xff0c;把deployment service ingress 这些打包在一块&#xff0c;一键式部署服务&#xff0c;类似于yum 官方提供的一个类似于安装仓库的功能&#xff0c;可以实…...

求助帖(setiosflags)的左右对齐问题:

以后自己要注意&#xff0c;如果两个相互矛盾的标志同时被设置&#xff0c;如先设置 setiosflags(ios::right)&#xff0c;然后又设置 setiosflags(ios::left)&#xff0c;那么结果可能就是两个标志都不起作用。因此&#xff0c;在设置了某标志&#xff0c;又要设置其他与之矛盾…...

升级8.0:民生手机银行的“内容解法”

数字化浪潮&#xff0c;滚滚来袭。 随着数字中国建设的持续推进&#xff0c;数字经济正在蓬勃发展。中商产业研究院分析师预测&#xff0c;2023年中国数字经济市场规模将增长至56.7万亿元&#xff0c;占GDP的比重将达到43.5%。 在此浪潮下&#xff0c;数字化的触角蔓延到各行…...

Kubernetes多租户实践

由于namespace本身的限制&#xff0c;Kubernetes对多租户的支持面临很多困难&#xff0c;本文梳理了K8S多租户支持的难点以及可能的解决方案。原文: Multi-tenancy in Kubernetes 是否应该让多个团队使用同一个Kubernetes集群? 是否能让不受信任的用户安全的运行不受信任的工作…...

【GEE】GEE反演地表温度相关问题说明(空洞、Landsat9数据集等)

之前分享了基于GEE-Landsat8数据集地表温度反演&#xff08;LST热度计算&#xff09;&#xff0c;最近有很多小伙伴私信我很多问题&#xff0c;一一回复太慢了&#xff0c;所以今天写篇文章统一回答一下大家的问题。 问题1&#xff1a;数据有很多空洞、某些条带没有数据等 问题…...

【蓝桥备赛】数组分割——组合数学?

题目链接 数组分割 个人思路 两个数组都需要和为偶数&#xff0c;那么就去思考一个数组如何才能和是偶数呢&#xff1f;&#xff1f; 数组里肯定要么是奇数要么是偶数&#xff0c;偶数无论有多少个&#xff0c;都不会改变一个数组的奇偶性。但是奇数个奇数的和还是奇数&…...

iphone5s基带部分电源部分主主电源供电及

时序: 1.,基带电源的供电&#xff0c;基带电源也叫pmu。 首先时序图说电池提供供电&#xff0c;电池是J6接口&#xff0c;视频习惯把接口称之为座子。查U2_RF芯片&#xff0c;发现供电信号为PP_BATT_VCC_CONN&#xff0c;但是没查到跟电池座子有关系&#xff0c;电池座子写的是…...

【每日一题】按分隔符拆分字符串

文章目录 Tag题目来源解题思路方法一&#xff1a;遍历方法二&#xff1a;getline 写在最后 Tag 【遍历】【getline】【字符串】【2024-01-20】 题目来源 2788. 按分隔符拆分字符串 解题思路 方法一&#xff1a;遍历 思路 分隔符在字符串开始和结束位置时不需要处理。 分隔…...

spawn_group_template | spawn_group | linked_respawn

字段介绍 spawn_group | spawn_group_template 用来记录与脚本事件或boss战斗有关的 creatures | gameobjects 的刷新数据linked_respawn 用来将 creatures | gameobjects 和 boss 联系起来&#xff0c;这样如果你杀死boss&#xff0c; creatures | gameobjects 在副本重置之前…...

软考系分之计算机网络规划设计、综合布线、RAID和网络存储等

文章目录 1、概要2、网络的三层模型3、综合布线系统4、廉价磁盘冗余阵列&#xff08;RAID&#xff09;5、网络存储6、总结 1、概要 本篇重点介绍计算机网络中的网络规划设计、综合布线、RAID和网络存储。 2、网络的三层模型 三层模型分为核心层、汇聚层和接入层&#xff0c;接…...

使用ElEment组件实现vue表单校验空值

1.绑定表单组件数组rules 2.在data域中设定组件rules 3.设定调用方法函数 提交校验 取消&#xff1a; 测试页面 提交空值 失去焦点 取消重置 提交后重置...

Defender Control:Windows Defender 终极控制指南 - 如何永久禁用Windows安全防护

Defender Control&#xff1a;Windows Defender 终极控制指南 - 如何永久禁用Windows安全防护 【免费下载链接】defender-control An open-source windows defender manager. Now you can disable windows defender permanently. 项目地址: https://gitcode.com/gh_mirrors/…...

第08章 FastAPI 与 SSE 流式 RAG 后端

第08章 FastAPI 与 SSE 流式 RAG 后端 到目前为止&#xff0c;知识库、检索工具、MCP 客户端都已经就绪&#xff0c;但仍缺少一个面向最终用户的入口。本章用 FastAPI 把整条 RAG 链路串起来&#xff1a;接收前端发来的自然语言问题&#xff0c;调用 MCP 工具检索相关工单&…...

Boss直聘职位数据自动化采集:Python爬虫架构设计与工程实践

1. 项目概述与核心价值最近在技术社区里&#xff0c;看到不少朋友在讨论一个叫longsizhuo/BossZhiPin_Job_Search的项目。光看名字&#xff0c;你大概就能猜到&#xff0c;这是一个跟“Boss直聘”和“职位搜索”相关的自动化工具。作为一个在招聘数据分析和自动化领域摸爬滚打了…...

开源自动驾驶系统终极指南:从入门到精通

开源自动驾驶系统终极指南&#xff1a;从入门到精通 【免费下载链接】openpilot openpilot is an operating system for robotics. Currently, it upgrades the driver assistance system on 300 supported cars. 项目地址: https://gitcode.com/GitHub_Trending/op/openpilo…...

从XTR文件看GNSS数据质量:如何利用Anubis报告优化你的测量方案(以GPS/BDS/Galileo为例)

从XTR文件解码GNSS数据质量&#xff1a;实战分析与优化策略 在GNSS测量领域&#xff0c;数据质量直接决定了最终定位结果的可靠性。XTR文件作为Anubis软件生成的质量报告&#xff0c;包含了大量反映GNSS观测质量的指标参数。对于有经验的工程师而言&#xff0c;这些数字不仅仅是…...

从零到一:基于GD32E230核心板的PCB设计实战与模块化解析

1. GD32E230核心板硬件设计基础 第一次拿到GD32E230这颗国产MCU时&#xff0c;说实话有点小激动。作为兆易创新基于Cortex-M23内核的拳头产品&#xff0c;它用55nm工艺把芯片面积压缩到了惊人的3x3mm&#xff0c;却集成了5个定时器、2个SPI、2个I2C这些实用外设。我在去年一个智…...

从零到联网:QNX Neutrino RTOS安装后的第一个网络配置实战(含ifconfig与DHCP详解)

从零到联网&#xff1a;QNX Neutrino RTOS安装后的第一个网络配置实战 当你第一次看到QNX Neutrino RTOS的Photon桌面时&#xff0c;那种兴奋感可能很快会被一个现实问题冲淡——这个看起来酷炫的系统怎么连上网&#xff1f;作为实时操作系统领域的标杆&#xff0c;QNX在车载系…...

ElevenLabs匈牙利语音API响应延迟飙升300%?内网穿透+CDN缓存+匈牙利语音素预加载三阶优化方案

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs匈牙利文语音API响应延迟飙升300%的现象复现与根因定位 近期多位开发者反馈&#xff0c;ElevenLabs API 在处理匈牙利语&#xff08;hu-HU&#xff09;文本转语音请求时&#xff0c;平均端到…...

Apache Burr框架:构建可观测有状态数据应用的核心原理与实践

1. 项目概述&#xff1a;一个用于构建和评估数据产品的Python框架如果你正在处理数据密集型应用&#xff0c;比如推荐系统、个性化广告或者任何需要根据用户行为实时调整策略的场景&#xff0c;你肯定遇到过这样的困境&#xff1a;模型训练和离线评估做得再好&#xff0c;一旦上…...

飞书自动化工具feishu-atuo:Python积木式开发与实战指南

1. 项目概述&#xff1a;飞书自动化&#xff0c;从零到一的效率革命 如果你和我一样&#xff0c;每天的工作流里都离不开飞书&#xff0c;那你肯定也经历过这些时刻&#xff1a;手动把日报、周报从文档复制到表格里归档&#xff1b;在多个群里重复发送同样的通知&#xff1b;为…...