13.12. 命令历史和 Tab 自动补全

用不了多久,你就会感觉到一遍遍地重复键入相同命令并不是那么激动人心。一个小小的键入错误会破坏整个命令行。

解决办法之一是使用命令行历史。通过使用 [向上箭头][向下箭头]键来上下滚动,你会发现许多前面已经键入过的命令。

我们可以再在 sneakers.txt(在第 13.9.1 节中创建的)文件中试验一下。不过,第一次,让我们在 shell 提示下键入:

cat sneakrs.txt

当然,什么也不会发生,因为 sneakrs.txt 文件并不存在。没问题,我们只需使用向上箭头键来把这个命令取回,然后使用向左箭头键把光标移到我们漏掉“e”的地方。插入这个字母后再按 [Enter] 键。

现在我们就可以看到 sneakers.txt 的内容了。

bash 命令行历史文件中可以默认贮存 500 个命令。

窍门窍门
 

通过在 shell 提示下键入 env 命令,我们会看到控制命令行历史大小的环境变量。写有 HISTFILESIZE=500 的那一行显示了 bash 将会储存的命令数量。

命令行历史实际上被保存在一个文件中,它是我们的登录目录中叫做 .bash_history 的文件。我们可以用几种方法来读取:使用 vicatlessmore、以及其它命令。

请留意这个文件可能会很长。要使用 more 命令来读取它,在你的主目录下键入:

more .bash_history

要向前移动一个屏幕,按 [Space] 键;要向后移动一个屏幕,按 [b] 键;要退出,按 [q] 键。

窍门窍门
 

要不使用箭头键或翻阅历史文件而找到其中的命令,使用 grep 这个功能强大的搜索工具(请参阅第 13.11.3 节)。下面介绍了如何快速地寻找一个前面已用过的命令:假设你在搜寻一个类似于 cat sneak 什么的命令。你用过了那个命令,你以为它可能还在你的历史文件中。在 shell 提示下键入:

history | grep sneak

另一个省时的工具又称为命令自动补全。如果你键入了文件名、命令、或路径名的一部分,然后按 [Tab] 键,bash 要么会把文件或路径名的剩余部分补全,要么会给你一个响铃(如果你的系统中启用了声效的话)。如果你得到的是响铃,只需再按一次 [Tab] 键来获取与你已键入的部分匹配的文件或路径名的列表。

譬如,如果你忘记了命令 updatedb,但是记得这个命令的一部分,你可以用 su 命令变为根用户,然后在 shell 提示下键入 up,连按两次 [Tab] 键,你便会看到一个可用来补全命令的列表,包括 updatedbuptime。键入部分命令 upd,然后再按 [Tab] 键,你的命令就会被自动补全。