交互式 shell 可以保存你输入过的命令。本课重点介绍 Bash,其中的 history 内建命令用于显示和管理这份记录;其他 shell 可能采用不同的快捷键、文件或设置。
命令行 · 第 9 课
history 命令
学习在 Bash 中查看、搜索、重用和管理命令历史。
查看 Bash 历史
要查看你使用过的命令列表,输入 history。
$ history
101 pwd
102 ls -la
103 cat notes.txt
每一行都有一个历史编号,后面跟着命令。
哪个 Bash 命令会显示当前带编号的历史列表?
重用以前的命令
shell 提供了几种快捷方式来方便地重运行命令。
- 向上箭头:想运行刚才执行过的命令?只需按向上箭头键即可向后循环浏览历史命令。
!!快捷方式:要再次执行最近的命令,可以使用!!。例如,如果你刚运行了cat file1,输入!!并按回车将再次执行cat file1。- 按编号运行:使用
!102来运行历史中编号为 102 的命令。 - 按前缀运行:使用
!cat来运行最近以cat开头的命令。
以 ! 开头的历史扩展形式可能会在按 Enter 后立即运行命令。只要有疑问,就先检查匹配内容,尤其是在添加提升权限的命令或操作重要文件之前。
哪个 Bash 历史扩展会重复最近执行的命令?
交互式搜索历史
最强大的历史快捷键之一是 Ctrl-R。这会启动反向搜索。按下 Ctrl-R 后,开始输入你想查找的命令的任意部分,shell 会显示最近匹配的命令。你可以反复按 Ctrl-R 来循环浏览更早的匹配项。找到想要的命令后,按回车即可执行。
按 Enter 会执行显示的匹配项。如果想先查看或编辑,请用方向键把该命令放到编辑行上。
你记得以前某条 Bash 命令的一部分,并想交互式查找它。首先应按什么?
管理历史列表
除了查看历史,你还可以直接管理它。
- 清除当前历史列表:
history -c会移除内存中的所有历史条目。 - 将历史写入文件:
history -w会将当前会话的历史保存到你的历史文件,通常是~/.bash_history。 - 删除特定条目:
history -d <offset>按历史编号删除一条命令。
示例:
$ history -d 101
$ history -w
清空内存列表本身并不能保证旧命令已从所有文件、备份或其他活动 shell 中消失。历史行为还取决于 Bash 设置,以及会话读取或写入文件的时机。
哪个命令会把当前 Bash 历史列表写入配置的历史文件?
清理显示和补全名称
需要新的可见终端区域时,可以使用 clear:
$ clear
这不会删除 Bash 历史列表。根据终端的不同,滚动回看中也可能仍保留旧的显示内容。
Tab 补全也是避免重复输入的方法。先输入命令、文件名或目录名的开头,再按 Tab。若匹配唯一,Bash 可能直接补全;若有多个匹配,则可能显示候选项。
命令行可能被存进历史记录,因此如果存在更安全的输入方法,不要直接把密码、令牌或其他秘密写进命令。
你想刷新可见终端,但不删除内存中的命令历史。应运行哪个命令?
课程已完成
你已完成 history 命令
现在,你可以查找并重用 Bash 命令,同时有意识地管理历史记录。
显示当前带编号的历史列表。
谨慎地调出或展开以前的命令。
使用
Ctrl+R交互式搜索历史。删除、清空或写入历史条目。
区分命令历史与终端显示内容。