哈喽~ 各位运维、服务器小伙伴们,今天学习一下服务器的历史命令,记录一下,跟大家也一同学习下, 加深理解~!
一、今天遇到一个问题
作为一个环境管理者,一直在服务器上操作history命令, 但是不太明白为什么每次都只显示部分历史命令,以及历史文件里保存的格式是什么。二、实操命令(复制粘贴就能用,避免输错)
为什么history每次只显示部分历史命令呢?
[root@hostname~]# echo $HISTSIZE15[root@hostname~]# history 6 2026-06-02 10:17:17grep HIST /etc/profile.d 7 2026-06-02 10:17:19history 8 2026-06-02 10:17:27ls 9 2026-06-02 10:17:31history 10 2026-06-02 15:33:24uname -a 11 2026-06-02 15:33:28cat /etc/redhat-release 12 2026-06-02 17:39:15ls 13 2026-06-02 17:39:17ls -trl 14 2026-06-02 17:39:21view a.txt 15 2026-06-02 17:39:46grep -v "不通" a.txt 16 2026-06-03 11:32:26echo $HISFILE 17 2026-06-03 11:32:32echo $HISTFILE 18 2026-06-03 11:34:50echo $HISTFILESIZE 19 2026-06-03 11:34:58echo $HISTSIZE 20 2026-06-03 11:35:01history
以上HISTSIZE值为15, 则history显示最大条数是15条历史命令.
- HISTSIZE 变量是 决定在命令历史清单保存的历史命令的数量。
- 生命周期:打开的终端窗口里,history能显示出的最大条数。
2. 怎么将执行的历史命令持久化保存呢?
[root@hostname~]# echo $HISTFILE/root/.bash_history[root@hostname~]# cat ~bash_historygrep HIST /etc/profile.d#1780366637 history#1780366639 ls #1780366647 history #1780366651 uname -a #1780385604 cat /etc/redhat-release #1780385608 ls #1780385955 ls -trl #1780385957 view a.txt#1780385961 grep -v "不通" a.txt#1780385986 echo $HISFILE#1780457546 echo $HISTFILE #1780457552 echo $HISTFILESIZE #1780457690 echo $HISTSIZE #1780457698 history#1780457701
- 默认~/.bash_history,定义内存历史最终要写入的磁盘文件。
生命周期: 永久的,磁盘里的历史。
3.保存在历史文件中的最大行数是多少呢? 还是所有都会永久保存呢?
查看以上显示的~/.bash_history 中只显示15条历史命令。[root@hostname~]# cat ~bash_historygrep HIST /etc/profile.d#1780366637 history#1780366639[root@hostname~]# date -d @17803666392026年 06月 02日 星期二 10:17:19 CST[root@hostname~]# history 6 2026-06-02 10:17:17grep HIST /etc/profile.d 7 2026-06-02 10:17:19history[root@hostname~]# echo $HISTTIMEFORMAT%F %T/* %F=日期, %T=时间,组合起来就是history命令显示[年-月-日 时:分:秒]
- HISTTIMEFORMAT决定在命令历史文件中是否记录操作时间及记录时间的格式。
- 其中历史文件中时间显示可以使用date -d 命令查找具体的执行时间。
五、总结&避坑提醒(重点划重点)
1.HISTFILE 作用:决定命令历史清单文件的文件名。默认~/.bash_history 2.HISTFILESIZE 作用:存储在历史文件root例如:~/.bash_history的最大行数。 生命周期: 永久的,磁盘里的历史。 3.HISTSIZE 作用:决定在命令历史清单保存的历史命令的数量。 生命周期: 打开的终端窗口里,history能显示出的最大条数。 临时的,关掉终端就没了。 4. HISTTIMEFORMAT 作用:决定在命令历史文件中是否记录操作时间及记录时间的格式, 该变量非shell内置变量,需配置。 |
你有没有遇到过历史命令相关变量的疑惑呢?评论区留言说说你的踩坑经历~喜欢记得点赞+在看,收藏起来慢慢看,后续持续更新技术/职场干货~