基础操作
-
查看历史命令
history
- 显示所有记录(默认存储1000-5000条,取决于
$HISTSIZE
变量) - 输出格式:
序号 命令
(如542 ls -l
)
- 显示所有记录(默认存储1000-5000条,取决于
-
执行历史命令
- 按序号执行:
!序号
(如!542
重执行ls -l
) - 按关键字执行:
!关键字
(如!ls
执行最近一条含ls
的命令)
- 按序号执行:
-
搜索历史记录
- 反向搜索:按
Ctrl+R
,输入关键词实时检索(如搜git
找git commit
) - 正向搜索:按
Ctrl+S
(需先执行stty -ixon
解除终端锁定)
- 反向搜索:按
进阶管理
-
修改历史记录配置
编辑~/.bashrc
调整参数:export HISTSIZE=5000 # 内存中存储条数 export HISTFILESIZE=10000 # 历史文件(~/.bash_history)最大条数 export HISTTIMEFORMAT="%F %T " # 显示时间戳(如 `542 2025-10-01 09:30:15 ls -l`) export HISTIGNORE="pwd:ls:history" # 忽略指定命令(冒号分隔)
生效配置:
source ~/.bashrc
-
删除历史记录
- 清空全部:
history -c
(仅清空当前会话,重启后文件记录仍存在) - 删除单条:
history -d 序号
(如history -d 542
) - 永久删除:清空后执行
history -w
写入文件
- 清空全部:
高效场景技巧
-
快速调用参数
- :上一条命令(如
sudo !!
用sudo重执行) !^
:上条命令的第一个参数(如mkdir dir && cd !^
进入dir
)- :上条命令的最后一个参数(如
tar -xvf file.tar && rm !$
解压后删除压缩包)
- :上一条命令(如
-
组合命令
history | grep "ssh" # 搜索所有含ssh的命令 !?log?:p # 打印最近含"log"的命令(不执行)
安全注意事项
-
敏感信息防护
- 避免在命令中明文输入密码(如
mysql -u root -p123456
) - 改用交互式输入或配置文件存储凭据
- 避免在命令中明文输入密码(如
-
历史记录加密
在~/.bashrc
添加:export HISTCONTROL=ignorespace # 忽略空格开头的命令
执行敏感命令前加空格(如
mysql -u root
),该命令不会记录 -
定期清理
cat /dev/null > ~/.bash_history # 彻底清空历史文件 history -c && history -w # 立即生效
常见问题解决
- 历史记录丢失?
检查~/.bash_history
文件权限:chmod 600 ~/.bash_history
- 时间戳不生效?
确认HISTTIMEFORMAT
格式正确(需引号包裹) - 忽略规则无效?
确保HISTIGNORE
中的命令名拼写准确(区分大小写)
引用说明参考Linux官方文档(GNU Bash Manual)、IBM DeveloperWorks技术指南及《Linux命令行与Shell脚本编程大全(第4版)》,遵循POSIX标准命令规范,适用于主流Linux发行版(Ubuntu/CentOS等),实践建议基于OWASP安全开发准则。
通过灵活运用history
,可减少重复输入、快速纠错并追溯操作痕迹,重点在于结合HISTCONTROL
和HISTIGNORE
规避安全风险,让命令行工作既高效又安全。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/10030.html