linux history命令使用解读

 更新时间:2024年08月17日 10:04:31   作者:临江仙我亦是行人  
这篇文章主要介绍了linux history命令使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

命令行历史

当执行命令后,系统默认会在内存记录执行过的命令

当用户正常退出时,会将内存的命令历史存放对应历史文件中,默认是 ~/.bash_history

登录shell时,会读取命令历史文件中记录下的命令加载到内存中 登录进shell后新执行的命令只会记录在内存的缓存区中;这些命令会用户正常退出时“追加”至命令历史文件中利用命令历史。

可以用它来重复执行命令,提高输入效率

1. 命令:history

history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]

2. 常用选项

选项说明
-c清空命令历史
-d offset删除历史中指定的第 offset 个命令
n显示最近的 n 条历史
-a追加本次会话新执行的命令历史列表至历史文件
-r读历史文件附加到历史列表
-w保存历史列表到指定的历史文件
-n读历史文件中未读过的行到历史列表
-p展开历史参数成多行,但不存在历史列表中
-s展开历史参数成一行,附加在历史列表后

3. 命令历史相关环境变量

变量说明
HISTSIZE命令历史记录的条数
HISTFILE指定历史文件,默认为~/.bash_history
HISTFILESIZE命令历史文件记录历史的条数
HISTTIMEFORMAT="%F %T $(whoami) "显示时间和用户
HISTIGNORE="str1:str2*:..."忽略str1命令,str2开头的历史
HISTCONTROL控制命令历史的记录方式
ignoredups 是默认值,可忽略重复的命令,连续且相同为“重复”
ignorespace 忽略所有以空白开头的命令
ignoreboth 相当于ignoredups, ignorespace的组合
erasedups 删除重复命令

4. 持久保存变量

以上变量可以 export 变量名=“值” 形式存放在 /etc/profile 或 ~/.bash_profile

示例

[root@centos ~]#cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
export HISTCONTROL=ignoreboth
export HISTTIMEFORMAT="%F %T "
[root@centos ~]#

[root@centos /]#history 5
  123  2021-03-25 15:52:15 cd ~
  124  2021-03-25 15:52:16 pwd
  125  2021-03-25 15:52:18 cd /
  126  2021-03-25 15:52:19 pwd
  127  2021-03-25 15:52:30 history 5
[root@centos /]#

5. 调用命令行历史

# 重复前一个命令方法 
重复前一个命令使用上方向键,并回车执行 
1. 按 !! 并回车执行
2. 输入!-1 并回车执行
3. 按 Ctrl+p 并回车执行

使用up(向上)和down(向下)键来上下浏览从前输入的命令
ctrl-r来在命令历史中搜索命令
(reverse-i-search)`':
Ctrl+g:从历史搜索模式退出
header 1header 2
!:0执行前一条命令(去除参数)
!n执行history命令输出对应序号n的命令
!-n执行history历史中倒数第n个命令
!string重复前一个以“string”开头的命令
!?string重复前一个包含string的命令
!string:p仅打印命令历史,而不执行
!$:p打印输出 !$ (上一条命令的最后一个参数)的内容
!*:p打印输出 !*(上一条命令的所有参数)的内容
^string删除上一条命令中的第一个string
^string1^string2将上一条命令中的第一个string1替换为string2
!:gs/string1/string2将上一条命令中所有的string1都替换为string2
# 要重新调用前一个命令中最后一个参数,三种方式
1. !$           # 表示前一个命令中最后一个参数
2. Esc, .       # 点击Esc键后松开,然后点击 . 键
3. Alt+ .       # 按住Alt键的同时点击 . 键
header 1header 2
command !^用上一个命令的第一个参数做command的参数
command !$利用上一个命令的最后一个参数做command的参数
command !*利用上一个命令的全部参数做command的参数,如 ls !*
command !:n利用上一个命令的第n个参数做command的参数
command !n:^调用第n条命令的第一个参数
command !n:$调用第n条命令的最后一个参数
command !n:m调用第n条命令的第m个参数
command !n:*调用第n条命令的所有参数
command !string:^从命令历史中搜索以 string 开头的命令,并获取它的第一个参数
command !string:$从命令历史中搜索以 string 开头的命令 ,并获取它的最后一个参数
command !string:n从命令历史中搜索以 string 开头的命令,并获取它的第n个参数
command !string:*从命令历史中搜索以 string 开头的命令 ,并获取它的所有参数

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Linux Shell echo命令/printf命令/test命令使用及说明

    Linux Shell echo命令/printf命令/test命令使用及说明

    本文介绍了Linux常用的echo、printf和test命令的用法和功能,对字符串输出、格式化显示以及条件测试进行了简明讲解,并提供了相关示例,适合脚本编写参考
    2025-10-10
  • Linux file命令的使用

    Linux file命令的使用

    这篇文章主要介绍了Linux file命令的使用,帮助大家更好的理解和学习Linux,感兴趣的朋友可以了解下
    2020-08-08
  • CentOS虚拟机无法显示本地IP的问题及解决方案

    CentOS虚拟机无法显示本地IP的问题及解决方案

    文章介绍了在CentOS虚拟机中无法显示本地IP的问题,并提供了两种解决方案:使用`network`服务禁用`NetworkManager`或反之,以及使用`NetworkManager`进行配置,通过禁用冲突的服务或正确配置`NetworkManager`,可以解决IP显示问题
    2025-11-11
  • 在Linux下搭建Git服务器步骤

    在Linux下搭建Git服务器步骤

    本篇文章主要介绍了在Linux下搭建Git服务器步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • SpringBoot整合Activiti7的实现代码

    SpringBoot整合Activiti7的实现代码

    这篇文章主要介绍了SpringBoot整合Activiti7的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Linux 创建修改删除用户和组的方法

    Linux 创建修改删除用户和组的方法

    这篇文章主要介绍了Linux 创建修改删除用户和组的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • gdb调试中设置监控点watch,rwatch,awatch的区别及说明

    gdb调试中设置监控点watch,rwatch,awatch的区别及说明

    这篇文章主要介绍了gdb调试中设置监控点watch,rwatch,awatch的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Linux内核宏container_of的深度剖析

    Linux内核宏container_of的深度剖析

    今天小编就为大家分享一篇关于Linux内核宏container_of的深度剖析,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Linux下gdb调试打印栈帧中的变量过程

    Linux下gdb调试打印栈帧中的变量过程

    这篇文章主要介绍了Linux下gdb调试打印栈帧中的变量过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Linux之信号的使用及说明

    Linux之信号的使用及说明

    文章主要介绍了信号的基本概念以及如何通过signal()进行信号处理的修改,接着对SIGINT和SIG_IGN信号进行了说明,最后介绍了kill()函数用于向指定进程发送指定信号
    2026-04-04

最新评论