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 1 | header 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 1 | header 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 可执行文件与写操作的同步问题(文件读写操作产生的锁机制)
在哪种系统下都会有文件操作产生的同步问题,今天说说linux下读写文件的锁机制。2013-10-10
centos7利用yum安装lnmp的教程(linux+nginx+php7.1+mysql5.7)
lnmp相信不用多介绍了,大家应该都知道,下面这篇文章主要给大家介绍了关于centos7利用yum安装lnmp(linux+nginx+php7.1+mysql5.7)的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。2018-03-03
使用Apache HttpClient执行GET、POST、PUT和DELETE请求的操作方法
Apache HttpClient 是一个功能强大且灵活的库,用于在Java中处理HTTP请求,本教程将演示如何使用Apache HttpClient来执行GET、POST、PUT和DELETE请求,感兴趣的朋友跟随小编一起看看吧2024-12-12
Linux环境使用crontab命令设置定时周期性执行任务【含php执行代码】
这篇文章主要介绍了Linux环境使用crontab命令设置定时周期性执行任务,结合实例形式较为详细的分析了crontab命令的功能、应用场景及相关操作注意事项,并附带了php执行代码供大家参考,需要的朋友可以参考下2019-07-07


最新评论