Linux history 命令

Linux history 命令详解

history 是 Linux 系统中一个非常实用的命令,用于查看、管理和操作当前 Shell 会话中执行过的命令历史记录。它可以帮助用户快速重复执行命令、搜索历史记录、清除敏感命令等,极大地提高了命令行操作的效率。


一、基本用法
  1. 显示历史记录

    • 直接输入 history 命令,会列出当前 Shell 会话中执行过的所有命令及其对应的序号。

      $ history
      

      示例输出:

       1  ls -l2  cd /var/log3  cat syslog
      
  2. 限制显示条数

    • 显示最近 n 条历史记录:

      $ history 10
      

二、常用选项
选项描述示例
-c清空当前会话的历史记录history -c
-d offset删除指定偏移量处的命令(按序号)history -d 5(删除第5条命令)
-a将当前会话的新命令追加到历史文件(~/.bash_history)中history -a
-r从历史文件中读取命令并加载到当前会话中history -r
-w将当前会话的历史记录写入历史文件history -w
-n从历史文件中读取尚未读取的新记录history -n

组合命令 history -c && history -w 的作用

  • 完整流程:

    • history -c:清空当前会话的内存历史记录。

    • history -w:将空的历史记录写入历史文件,覆盖原有内容。

  • 最终效果:

    • 当前会话的历史记录被清空。
    • 历史文件(如 ~/.bash_history)也被清空,原有命令记录被删除。
  • 典型应用场景:

    • 防止敏感命令(如包含密码的命令)被记录到历史文件中。
    • 在脚本中需要临时清理历史记录时使用。

三、环境变量配置

通过修改环境变量,可以更灵活地管理历史记录:

  1. 设置历史记录数量

    • HISTSIZE:控制当前会话中保存在内存中的命令数。
    • HISTFILESIZE:控制历史文件中保存的命令行数。
    export HISTSIZE=1000       # 内存中最多保存1000条命令
    export HISTFILESIZE=2000   # 历史文件中最多保存2000条命令
    
  2. 忽略重复命令或特定命令

    • HISTCONTROL:定义如何处理重复命令或以空格开头的命令。
      • ignoredups:忽略重复的连续命令。
      • ignorespace:忽略以空格开头的命令。
      • ignoreboth:合并以上两者。
    export HISTCONTROL=ignoreboth
    
  3. 排除特定命令

    • HISTIGNORE:指定不保存到历史记录中的命令(用冒号分隔)。
    export HISTIGNORE="ls:pwd:exit"  # 不保存 ls、pwd、exit 命令
    
  4. 显示时间戳

    • HISTTIMEFORMAT:为每条历史记录添加时间戳。
    export HISTTIMEFORMAT="%F %T "  # 格式:YYYY-MM-DD HH:MM:SS
    

    示例输出:

     1  2025-06-16 11:37:45 ls -l2  2025-06-16 11:38:00 cd /var/log
    
  5. 实时记录命令

    • PROMPT_COMMAND:每次执行命令后立即追加到历史文件。
    export PROMPT_COMMAND='history -a'
    

四、高级功能
  1. 搜索历史记录

    • 使用 Ctrl + R 反向搜索历史命令(输入关键字后按 ↑↓ 键选择)。

    • 使用 grep 过滤历史记录:

      history | grep "ls"  # 搜索包含 "ls" 的命令
      
  2. 快速执行历史命令

    • !!:执行上一条命令。
    • !n:执行第 n 条命令(如 !3 执行第3条命令)。
    • !string:执行以 string 开头的最新命令(如 !cat 执行最近的 cat 命令)。
    • !-n:执行倒数第 n 条命令(如 !-2 执行倒数第2条命令)。
  3. 命令参数替换

    • !!:$:获取上一条命令的最后一个参数。

      $ ls anaconda-ks.cfg
      $ vi !!:$  # 等价于 vi anaconda-ks.cfg
      
    • !^:获取上一条命令的第一个参数。

      $ cp file1 file2
      $ rm !^  # 等价于 rm file1
      
    • !cmd:arg:从历史中提取特定命令的参数(如 !cp:2 获取 cp 命令的第二个参数)。

  4. 禁用历史记录

    • HISTSIZE 设置为 0,禁用历史记录功能:

      export HISTSIZE=0
      

五、历史文件操作
  1. 历史文件位置

    • Bash:~/.bash_history
    • Zsh:~/.zsh_history
    • Fish:~/.local/share/fish/fish_history
  2. 手动清空历史文件

    • 清空当前用户的 .bash_history 文件:

      > ~/.bash_history
      
    • 或者:

      cat /dev/null > ~/.bash_history
      
  3. 保护隐私

    • 修改历史文件权限,防止其他用户读取:

      chmod 600 ~/.bash_history
      

六、不同 Shell 的差异
Shell历史命令历史文件位置
Bashhistory~/.bash_history
Zshhistory~/.zsh_history
Fishhistory~/.local/share/fish/fish_history

七、总结

history 命令是 Linux 命令行用户不可或缺的工具,通过合理配置和使用,可以显著提升工作效率。以下是关键点总结:

  • 基础用法history 显示所有记录,history n 显示最近 n 条。
  • 管理记录:使用 -c 清空、-d 删除、-a 追加等选项。
  • 环境变量:通过 HISTSIZEHISTCONTROL 等控制记录行为。
  • 高级技巧Ctrl + R 搜索、!! 重复命令、参数替换。
  • 隐私保护:清空历史文件、设置权限、禁用记录。

通过灵活运用这些功能,你可以更高效地管理 Linux 命令行操作!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/909775.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/909775.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

侧信道分析中的简单模板攻击(TA)Python实现(带测试)

一、模板攻击原理 模板攻击(Template Attacks, TA)是一种高效的侧信道分析方法,利用密码设备运行时的物理泄漏信息(如功耗)恢复密钥。其核心思想是通过建模密钥相关中间值的泄漏特征,构建攻击模板。模板攻…

AI集群全光交换网络技术原理与发展趋势研究

​ 引言 随着人工智能技术的飞速发展,AI训练集群对网络互连的带宽、延迟和能效提出了前所未有的挑战。全光交换网络作为一种新兴技术,正在成为解决这些挑战的关键方案。 全光交换网络的基本概念 全光交换网络(Optical Circuit Switch, OCS)是一种利用…

PHP Swoft2 框架精华系列:Validator 校验器详解

文章目录 校验器校验器类型@Validate 注解属性说明校验器校验主要流程系统校验器每个属性存储结构校验器规则定义,注解、注解解析器定义校验器注解使用实现一个自定义的校验器校验器注解校验器注解解析器校验器规则系统校验器Controller/Action 绑定校验器校验器 校验器是 sw…

MySQL 类型转换与加密函数深度解析

MySQL 类型转换与加密函数深度解析 一、类型转换函数详解 1. 显式类型转换 CAST 函数 CAST(expression AS type)支持类型:BINARY, CHAR, DATE, DATETIME, TIME, DECIMAL, SIGNED [INTEGER], UNSIGNED [INTEGER]示例:SELECT CAST(2023-08-15 AS DATE);…

FPGA基础 -- Verilog 行为级建模之条件语句

Verilog 的行为级建模(Behavioral Modeling)中的条件语句(Conditional Statements),逐步从基础到实际工程应用,适合有RTL开发基础但希望深入行为建模的人。 一、行为级建模简介 行为级建模(Beh…

linux618 NFS web.cn NFS.cn backup.cn

权限问题 推测 ssh root登录失败 root192.168.235.100s password: ▒▒▒ʱ▒▒ܾ▒ root192.168.235.100s password: ▒▒▒ʱ▒▒ܾ▒ root192.168.235.100s password: ▒▒▒ʱ▒▒ܾ▒ root192.168.235.100s password: ▒▒▒ʱ▒▒ܾ▒ root192.168.235.100s password: …

氧化镱:稀土科技的“夜视高手”

氧化镱(Yb₂O₃)是一种重要的稀土氧化物,这种略带黄色的粉末,既不像黄金那样耀眼,也不像稀土家族里的“明星”如钕、铽那样广为人知,却在背后默默支撑着许多高科技产业,特别是在红外技术领域&am…

class对象【C#】2025复习

对象 西方思想是:复杂的事让秘书去做就行。老板只需简单的下达命令。 代码格式如下 秘书类型 秘书A new 秘书类型(); . 秘书A.开始工作(); // 调用实例对象的方法。 特别注意的是,程序只会用到 秘书A,秘书B&…

Qt程序启动动画

一、Qt有3种方式实现程序启动动画(介绍) 1、QSplashScreen 静态图片(png、jpg等格式) 2、QMovie 动态图片(gif格式) 3、QAxWidget 视频(swf格式) 1.QSplashScreen 静态图片(png、jpg等格式) //创建启动动画类实例 QSplashScreen splash(QPixmap(&qu…

贪心算法经典问题

目录 贪心思想 一、Dijkstra最短路问题 问题描述: 贪心策略: 二、Prim 和 Kruskal 最小生成树问题 Prim 算法: Kruskal 算法: 三、Huffman树问题 问题描述: 贪心策略: 四、背包问题 问题描述&a…

零知开源——STM32F4实现ILI9486显示屏UI界面系列教程(一):电子书阅读器功能

本教程将详细介绍如何在零知增强板上使用3.5寸ILI9486显示屏实现电子书阅读器功能。我们将使用LVGL库构建用户界面,并实现翻页、进度显示等核心功能。 目录 一、硬件连接 二、软件UI组件实现 三、零知IDE配置 四、演示效果 五、常见问题解决 六、总结与扩展 一…

支持selenium的chrome driver更新到137.0.7151.119

最近chrome释放新版本:137.0.7151.119 如果运行selenium自动化测试出现以下问题,是需要升级chromedriver才可以解决的。 selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only s…

架构下的最终瓶颈:数据库如何破局?

在分布式系统和云原生架构逐渐成熟的当下,我们已能够灵活扩展计算资源、水平扩展服务节点、拆分业务模块等。然而,在经历过多轮架构优化之后,数据库常常成为系统的“最后瓶颈”。尤其当数据量、并发量、实时性要求剧增时,数据库即…

湖北理元理律师事务所小微企业债务重组方案:司法与经营的共生逻辑

小微企业债务问题常陷入“救企业还是保老板”的困局。湖北理元理律师事务所为某汽车零部件供应商设计的“经营性债务重组”方案,提供了创新解题思路。 核心矛盾拆解 该企业面临三重困境: 矛盾类型 具体表现 法律风险等级 担保链危机 老板个人担保牵…

FastAdmin退出登录不提示的修改方法

修改退出登录后的提示行为 在FastAdmin中,默认退出登录后会显示"退出成功"的提示信息并跳转页面。要实现不显示提示信息直接跳转,可以通过以下方式修改: 方法一:修改控制器逻辑 找到application/admin/controller/Log…

工信部发布《中国工业软件产业发展研究报告(2025)》:PLM垄断加剧,Ai为国产PLM软件发展契机

在6月17日上午举行的2025南京软件大会开幕式上,工信部电子第五研究所现场发布《中国工业软件产业发展研究报告(2025)》(以下简称《研究报告》),并从工业软件产业发展现状、产业发展趋势,以及我国…

Flutter JSON解析全攻略:使用json_serializable实现高效序列化

引言:为什么我们需要JSON序列化工具? 在现代移动应用开发中,与服务器进行数据交互是必不可少的功能。JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,因其易读性、简洁性和广泛支持性&…

shelve模块的使用

shelve模块的使用 1. 什么是Shelve2. Shelve模块的数据存储与读取3. Shelve的读取数据4. Shelve模块的高级操作_ Shelve的数据更新和删除5. 删除操作可以使用del语句:6. Shelve的数据查询和处理_使用for循环来遍历Shelve对象中的所有键值对:7. Shelve模块…

python大学校园旧物捐赠系统

目录 技术栈介绍具体实现截图系统设计研究方法:设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示 技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理,难度适中&#xf…

Python爬虫实战:研究eventlet库相关技术

1. 引言 在当今信息爆炸的时代,网络上的数据量呈现出指数级增长的趋势。从海量的网络信息中获取有价值的数据并进行分析,对于企业决策、学术研究以及个人兴趣等方面都具有重要意义。网络爬虫作为一种自动化获取网页内容的技术手段,应运而生并得到了广泛的应用。 网络爬虫(…