在 Linux 中,用户执行的所有命令都会被记录在历史命令列表中。这个列表默认保存在用户主目录下的 .bash_history
文件中。每次退出终端时,当前的历史命令会被自动追加到这个文件中。
通过查看 .bash_history
文件,我们可以看到之前执行过的所有命令。但是直接查看这个文件可能并不直观,我们通常会使用 history
命令来查看历史命令列表。
使用 history
命令可以查看当前用户的历史命令列表。执行 history
命令会显示当前用户执行过的所有命令,每个命令都会被编号,如下所示:
1 ls 2 cd /tmp 3 mkdir test 4 touch file.txt 5 rm -rf test
从上面的输出我们可以看到,历史命令列表按时间顺序编号存储,最新的命令在最后。我们可以通过命令编号快速定位和重复执行某个历史命令。
除按命令编号查找,我们还可以按命令名称进行搜索。Linux 提供两种方式来按命令名称搜索历史命令:
history
命令的 -c
选项我们可以使用 history
命令的 -c
选项来按命令名称搜索历史命令。该选项允许我们指定一个模式(pattern),history
命令会搜索历史命令列表,并输出所有匹配该模式的命令。
例如,我们想搜索所有包含 "ls" 的历史命令,可以执行:
$ history -c ls 1 ls 4 ls -l 9 ls /tmp
从输出中我们可以看到,history -c
命令搜索出所有包含 "ls" 的历史命令。我们也可以使用正则表达式来进行更复杂的搜索。
!命令名称
快捷方式除使用 history -c
命令,我们还可以使用 !命令名称
的快捷方式来搜索历史命令。这种方式可以直接执行匹配的历史命令,而不需要先查看命令编号。
例如,我们想重复执行最近一次使用 "ls" 命令,可以直接输入 !ls
。这将执行最近一次包含 "ls" 的历史命令。
我们还可以使用通配符来搜索,例如 !l*
将会执行最近一次以 "l" 开头的历史命令。
除上述方法,我们还可以使用一些技巧来提高历史命令搜索的效率:
Ctrl+R
进行交互式搜索按下 Ctrl+R
后,终端会进入历史命令搜索模式。此时我们可以输入关键字,终端会实时显示匹配的历史命令。按 Ctrl+R
可以循环搜索,找到想要的命令后按 Enter
即可执行。
!?关键字?
进行模糊搜索除使用 !命令名称
进行精确搜索,我们还可以使用 !?关键字?
的模糊搜索方式。这种方式会搜索历史命令中包含指定关键字的命令,而不需要完全匹配命令名称。
HISTSIZE
和 HISTFILESIZE
变量默认情况下,Bash 会保存 500 条历史命令。我们需要保存更多的历史命令,可以通过调整 HISTSIZE
和 HISTFILESIZE
环境变量来实现。例如,将 HISTSIZE
设置为 5000,将 HISTFILESIZE
设置为 10000,就可以保存更多的历史命令。
在 Linux 系统中,我们可以通过多种方式快速搜索和重复执行历史命令。使用 history -c
命令或 !命令名称
快捷方式可以按命令名称进行搜索,而 Ctrl+R
交互式搜索和 !?关键字?
模糊搜索也是非常有用的技巧。通过合理设置 HISTSIZE
和 HISTFILESIZE
变量,我们还可以保存更多的历史命令。掌握这些技巧,可以大大提高我们在 Linux 下的工作效率。