如何找到我在终端中运行的旧命令?
我使用了 appengine 命令,希望在本地命令历史记录中找到它,而无需再次在线研究它。
答案1
历史就是你要找的。
运行history
以获取最后 1000 条命令的列表,或者运行:
history | grep command_to_search
在历史生成的列表中搜索某种模式,例如:
history | grep apt
要搜索任何apt
相关命令,请注意grep
不要将模式锚定到字符串的任一端,因此大多数情况下不需要通配符。
这history
列表生成自最后 1000 条命令(默认)存储在~/.bash_history
(默认情况下存储最后 2000 条命令),并且只有在您完全退出 Bash 会话时,该文件才会更新。这意味着,除非您关闭终端,否则当前会话中的所有命令都不会保存在该文件中。如果您终止 shell 进程,它们也不会被写入。
因此,命令历史记录(最后 2000 条命令)也可以~/.bash_history
通过以下方式在 找到:
less ~/.bash_history
或者,例如gedit ~/.bash_history
- 打开 Nautilus,Ctrl+ h,然后搜索文件
.bash_history
。
和行为history
~/.bash_history
可以改变通过添加或修改中的选项~/.bashrc
,以下是几个示例:
附加
export HISTCONTROL=ignoreboth:erasedups
或修改现有HISTCONTROL
行,以删除重复的命令,即,如果一个命令echo Hello
在之后立即运行echo Hello
,则只有一个命令会出现在中bash_history
。修改
HISTSIZE=1000
以扩展或减少显示的命令数量history
修改
HISTFILESIZE=2000
以扩展或减少 中存储的命令数量bash_history
。设置HISTFILESIZE=-1
为无限制。附加
HISTFILE=/path/to/file
以将历史记录保存到其他地方。
资料来源及进一步阅读:
答案2
有很多方法可以查找最近执行的命令。
最简单的方法就是按下↑按键并逐行循环浏览命令历史记录,直到找到您要查找的内容。
您也可以按Ctrl+R进入所谓的
(reverse-i-search)
模式。它是一个搜索提示,会自动用最近运行的包含此字符串的命令完成您开始输入的内容。当它显示您要查找的内容时,按Enter运行它,或Esc退出搜索提示,同时将命令保留在提示符上,以便您可以对其进行编辑。要放弃结果并退出搜索,请按Ctrl+ C。
您可以使用
history
Bash 内置功能显示历史记录中的完整命令列表。grep
您可以使用例如like来过滤与特定模式匹配的行列表history | grep 'appengine'
。history
可以通过输入 来找到有关 Bash 内置命令的更多信息help history
。使用 bang-expansion 直接运行最近执行的包含字符串的命令。这将用历史记录中的匹配行替换您输入的行并立即运行它,而无需确认,因此请小心。
只需输入
!string
,它就会用以“string”开头的最新命令行替换它。如果您想运行以“string”结尾的最后一个命令,请输入
!?string
。或者如果您想要在任何地方包含“字符串”的最后一个命令行,请键入
!?string?
。通过输入可以找到有关历史爆炸扩展的更多信息
man history
。
答案3
如果它最近被使用过,您可以通过打开终端并使用键盘上的向上和向下箭头查看您最后使用的命令来轻松找到它。