文章目录
-
- 命令格式
-
- 基本用法
-
-
- 高级用法
-
- 3.1 搜索历史命令
- 3.2 历史记录管理
- 3.3 使用历史参数
-
- 注意事项
-
- 4.1 历史记录存储
- 4.2 安全考虑
- 4.3 环境变量配置
1. 命令格式
bash
复制代码
history [选项] [参数]
- -c:清空历史记录
- -d offset:删除指定位置的历史记录
- -a:将当前会话的历史记录追加到历史文件中
- -n:从历史文件中读取尚未读取的历史记录
- -r:读取历史文件内容到当前会话
- -w:将当前历史记录写入历史文件
- -p:执行历史扩展但不执行命令
- -s:将命令添加到历史记录中但不执行
2. 基本用法
2.1 查看历史命令
bash
复制代码
# 查看所有历史命令
history
# 查看最近10条历史命令
history 10
2.2 执行历史命令
bash
复制代码
# 执行第15条历史命令
!15
# 执行上一条命令
!!
# 执行最近以"git"开头的命令
!git
3. 高级用法
3.1 搜索历史命令
bash
复制代码
# 使用Ctrl+R进行反向搜索
# 按Ctrl+R,输入关键词,反复按Ctrl+R可以向前搜索
# 使用grep过滤历史命令
history | grep "ssh"
# 显示带时间戳的历史命令(需要先配置)
export HISTTIMEFORMAT='%F %T '
history
3.2 历史记录管理
bash
复制代码
# 清空当前会话的历史记录
history -c
# 删除第5条历史记录
history -d 5
# 删除5-10条历史记录
for i in {10..5}; do history -d 5; done
# 将当前历史记录保存到文件
history -w ~/my_history.txt
3.3 使用历史参数
bash
复制代码
# 上一条命令的最后一个参数
ls /usr/local/bin
cd !$ # 相当于 cd /usr/local/bin
# 上一条命令的所有参数
cp file1.txt file2.txt /backup/
ls !* # 相当于 ls file1.txt file2.txt /backup/
# 上一条命令的第n个参数
tar -czf backup.tar.gz /home/user
chmod 644 !^ # 相当于 chmod 644 -czf(第一个参数)
chmod 644 !:2 # 相当于 chmod 644 backup.tar.gz(第二个参数)
4. 注意事项
4.1 历史记录存储
bash
复制代码
# 历史文件通常位于
echo $HISTFILE # 通常是 ~/.bash_history
# 历史记录大小限制
echo $HISTSIZE # 内存中保存的历史数量
echo $HISTFILESIZE # 历史文件中保存的历史数量
4.2 安全考虑
bash
复制代码
# 避免在历史记录中保存敏感信息
# 在命令前加空格(需要配置HISTCONTROL)
export HISTCONTROL=ignorespace
mysql -u root -p # 命令前的空格会使该命令不被记录
# 完全禁用历史记录
export HISTSIZE=0
4.3 环境变量配置
bash
复制代码
# 在 ~/.bashrc 中配置
export HISTSIZE=10000 # 内存中保存10000条记录
export HISTFILESIZE=20000 # 历史文件中保存20000条记录
export HISTCONTROL=ignoreboth # 忽略重复命令和空格开头的命令
export HISTIGNORE="ls:ps:history" # 忽略指定命令的记录
export HISTTIMEFORMAT='%F %T ' # 为历史记录添加时间戳