Akemi

高效使用Linux-历史记录操作

2025/02/19

历史记录的环境变量

  • HISTSIZE

历史记录最多存储的条数,设置为-1即没有上限

  • HISTCONTROL=ignoredups

默认,忽略连续重复的命令添加到history中

  • HISTFILE

历史记录配置文件位置。每个shell都有一个单独的历史记录

每个shell启动时都会加载这个文件,所以每次启动shell都会有历史记录

快速使用历史命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
↑方向键
用于快速检索上次使用的命令,但是如果命令很多就不适用

!!
快速使用上一条命令

!grep
使用上次使用grep的命令

!?grep?
检索上一次使用grep的命令——即使那条命令在管道中

!110
执行指定位置的历史命令

!-3:p
执行倒数第三条命令,但不执行
!!
执行

手动查找历史命令

shell下使用Ctrl+R进入(reverse-i-search)搜索命令行
输入匹配命令的任意字符,就可以找到目标命令,并且按Enter执行

连续按两次Ctrl+R,可以调出上次搜索与执行的命令

使用emacs或vim风格的命令行编辑

shell默认使用的事emacs风格的命令行,支持set -o vi切换成vim风格

如果使用less进行查看,也是vim风格的

操作描述 Emacs 风格快捷键 Vim 风格操作
进入编辑模式 默认直接输入 i 进入插入模式
退出编辑模式 无需退出(无模式) Esc 返回普通模式
光标移动
- 向左移动一个字符 Ctrl + B 普通模式下按 h
- 向右移动一个字符 Ctrl + F 普通模式下按 l
- 向左移动一个单词 Alt + B 普通模式下按 b
- 向右移动一个单词 Alt + F 普通模式下按 we
- 移动到行首 Ctrl + A 普通模式下按 0^
- 移动到行尾 Ctrl + E 普通模式下按 $
删除操作
- 删除左侧字符 Ctrl + H(Backspace) 插入模式下按 Backspace
- 删除右侧字符 Ctrl + D 普通模式下按 x
- 删除到行尾 Ctrl + K 普通模式下按 D
- 删除左侧单词 Ctrl + W 普通模式下按 db(删除前一个单词)
撤销/重做
- 撤销操作 Ctrl + _Ctrl + X Ctrl + U 普通模式下按 u
- 重做操作 无直接重做 普通模式下按 Ctrl + R
复制/粘贴
- 剪切到行尾 Ctrl + K 普通模式下按 d$
- 复制到剪贴板 Alt + W 普通模式下按 yy(复制整行)
- 粘贴 Ctrl + Y 普通模式下按 p
搜索历史命令
- 反向搜索历史 Ctrl + R 普通模式下按 / 输入关键字
- 正向搜索历史 Ctrl + S 普通模式下按 ? 输入关键字
CATALOG
  1. 1. 历史记录的环境变量
  2. 2. 快速使用历史命令
  3. 3. 手动查找历史命令
  4. 4. 使用emacs或vim风格的命令行编辑