手机版 收藏 导航

Linux 中如何按命令名称搜索历史命令

原创   www.link114.cn   2023-07-15 14:00:47

Linux 中如何按命令名称搜索历史命令

在 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 提供两种方式来按命令名称搜索历史命令:

1. 使用 history 命令的 -c 选项

我们可以使用 history 命令的 -c 选项来按命令名称搜索历史命令。该选项允许我们指定一个模式(pattern),history 命令会搜索历史命令列表,并输出所有匹配该模式的命令。

例如,我们想搜索所有包含 "ls" 的历史命令,可以执行:

$ history -c ls
  1  ls
  4  ls -l
  9  ls /tmp

从输出中我们可以看到,history -c 命令搜索出所有包含 "ls" 的历史命令。我们也可以使用正则表达式来进行更复杂的搜索。

2. 使用 !命令名称 快捷方式

除使用 history -c 命令,我们还可以使用 !命令名称 的快捷方式来搜索历史命令。这种方式可以直接执行匹配的历史命令,而不需要先查看命令编号。

例如,我们想重复执行最近一次使用 "ls" 命令,可以直接输入 !ls。这将执行最近一次包含 "ls" 的历史命令。

我们还可以使用通配符来搜索,例如 !l* 将会执行最近一次以 "l" 开头的历史命令。

除上述方法,我们还可以使用一些技巧来提高历史命令搜索的效率:

1. 使用 Ctrl+R 进行交互式搜索

按下 Ctrl+R 后,终端会进入历史命令搜索模式。此时我们可以输入关键字,终端会实时显示匹配的历史命令。按 Ctrl+R 可以循环搜索,找到想要的命令后按 Enter 即可执行。

2. 使用 !?关键字? 进行模糊搜索

除使用 !命令名称 进行精确搜索,我们还可以使用 !?关键字? 的模糊搜索方式。这种方式会搜索历史命令中包含指定关键字的命令,而不需要完全匹配命令名称。

3. 调整 HISTSIZEHISTFILESIZE 变量

默认情况下,Bash 会保存 500 条历史命令。我们需要保存更多的历史命令,可以通过调整 HISTSIZEHISTFILESIZE 环境变量来实现。例如,将 HISTSIZE 设置为 5000,将 HISTFILESIZE 设置为 10000,就可以保存更多的历史命令。

在 Linux 系统中,我们可以通过多种方式快速搜索和重复执行历史命令。使用 history -c 命令或 !命令名称 快捷方式可以按命令名称进行搜索,而 Ctrl+R 交互式搜索和 !?关键字? 模糊搜索也是非常有用的技巧。通过合理设置 HISTSIZEHISTFILESIZE 变量,我们还可以保存更多的历史命令。掌握这些技巧,可以大大提高我们在 Linux 下的工作效率。