sav*_*123 14 command-line bash history bash-history
如何找到我在终端中运行的旧命令?
我使用了一个 appengine 命令,并希望在我的本地命令历史记录中找到它,而无需再次在线研究它。
M. *_*rra 23
历史就是你要找的。
运行history
以获取最近 1000 个命令的列表,或运行:
history | grep command_to_search
Run Code Online (Sandbox Code Playgroud)
在历史生成列表中搜索某种模式,例如:
history | grep apt
Run Code Online (Sandbox Code Playgroud)
要搜索任何apt
相关命令,请注意grep
不会将您的模式锚定到字符串的任一端,因此在大多数情况下不需要通配符。
该history
列表是从存储在~/.bash_history
(默认情况下存储最后 2000 个)中的最后 1000 个命令(默认情况下)生成的,并且只有在您干净地退出 Bash 会话时才会更新此类文件。这意味着,在您关闭终端之前,当前会话中的所有命令都不会在该文件中。如果您终止 shell 进程,它们也不会被写入。
因此,也可以~/.bash_history
通过以下任一方式在 中找到命令历史记录(2000 条最后一条命令):
less ~/.bash_history
或者,例如 gedit ~/.bash_history
.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
以将历史记录保存在其他地方。
来源和进一步阅读:
Byt*_*der 13
有很多方法可以找到最近执行的命令。
最简单的方法是按一下?键并逐行循环浏览您的命令历史记录,直到找到您要查找的内容。
也可以按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
。