在 macOS 终端中搜索我的命令历史记录的快捷方式是什么?
可用于搜索的历史记录有多长时间? 它存储在哪里?
如何使用 Ctrl+R在 Mac中的 Terminal实用程序上搜索命令历史记录,
+
Mac
Terminal
dudeOnMac: freddy$ whoami freddy (reverse-i-search)`who': whoami
为了控制 history将被保留多长时间,这取决于一些 shell环境变量,即 HISTFILESIZE,它只不过是你想要保留的历史行数。在 .bash_profile中为它设置一个巨大的值以使其生效
history
shell
HISTFILESIZE
.bash_profile
HISTFILESIZE=10000000
命令历史记录存储在主文件夹下一个名为 . bash _ history的隐藏文件中。要查看 nano 中的内容,请在 Terminal 中使用以下命令:
nano ~/.bash_history
或者用文本编辑器打开(默认是 TextEdit) :
open ~/.bash_history
在我的例子中,它是一个非常长的列表,当我滚动时,似乎最后的 ~ 500个命令存储在这里。
要查看或回忆最近使用的命令,只需按向上箭头键就可以顺序读取存储在。Bash _ history.
使用 Ctrl + R从终端的历史记录中搜索命令。
Ctrl
R
(reverse-i-search)`':
键入要搜索的命令的任何子字符串,例如 grep
(reverse-i-search)`grep': grep "XYZ" abc.txt
它将返回与您的输入相匹配的最新命令。如果这不是您正在搜索的命令,请继续按 Ctrl + R进行下一次匹配,直到找到您的命令为止。
找到命令后,按 Return执行它。
Return
如果希望退出而不运行任何命令,请按 Ctrl + G
G
PS: 这个答案和 Inian 建议的一样,只是为了方便使用给出了更多的细节。
在 Unix 和 Linux Stack Exchange 上从 这个答案迁移 SO 的答案:
按 ctrl + R将打开历史-搜索-向后。现在开始键入您的命令,这将给出第一个匹配。通过按 ctrl + R再次(再次)你可以循环通过历史。
如果你喜欢超级懒惰,你可以绑定上/下箭头键来执行这个搜索,我有以下在我的 .inputrc绑定上/下箭头键到 history-search-backward和 history-search-forward:
.inputrc
history-search-backward
history-search-forward
# Key bindings, up/down arrow searches through history "\e[A": history-search-backward "\e[B": history-search-forward "\eOA": history-search-backward "\eOB": history-search-forward
只要键入一些东西(可选) ,然后按上/下箭头键搜索历史中的命令,开始与您键入的。
要在 .bashrc而不是 .inputrc中完成此操作,可以使用:
.bashrc
bind '"\e[A": history-search-backward'
使用此命令-
这在 OSX 和 Linux 上都适用。
根据您的 shell,历史记录存储在 ~/. zsh _ History 或 ~/. bash _ History 或 ~/. History 中。
根据您的系统,历史记录可以存储1000或2000行。
echo $HISTSIZE
对于那些希望从历史记录中搜索特定命令的用户,可以使用 reverse-i-search进行搜索。反向搜索允许您输入您正在查找的命令的任何关键字(任何) ,并且 reverse search导航回历史记录,逐步匹配以前的命令并返回整个命令。
reverse-i-search
reverse search
当一个人不能记住他们经常使用的所有方便的冗长命令时,它尤其有用。要进行反向搜索 ctrl + R并键入任何线索,这将返回与您键入的单词相匹配的以前的命令。然后找到命令后,按 Enter直接从 search 执行它。
ctrl
Enter
为了方便地搜索历史,我建议您安装 fzf。
fzf
它是一个用于命令行的交互式 Unix 过滤器,可用于任何列表; 文件、命令历史、进程、主机名、书签、 git 提交等。
只要安装它,单击 ctrl + R,就可以滚动查看 shell 历史记录,不需要 grep,也不需要等待很长时间,直到弹出您正在等待的命令。
grep
它支持 Mac OS、 Linux 甚至 Windows。
对于 macOS Big Sur,文件现在是. zsh _ history
如果你做 vi ~/。在终端中的 zsh _ history 中,您可以通过按下/然后按下搜索词来使用 regex。
# USAGE: find.history cd # filter commands in shell history by a search term and execute the selected command function find.history { eval $(history | grep "$1" | tail | awk '{$1=""}1' | tail -r | peco) }
您需要安装 peco。
peco
Https://github.com/peco/peco
[$]> brew install peco
自动化
既然您提到通过 终结者应用程序查看历史记录是一种快速解决方案。您可能希望自动化,或者快速查看历史记录,也许是从被告席。您可以使用 AppleScript 应用程序作为替代方案。对于许多其他方法来说,这是创建简单快捷方式的一种可选方法。
tell application "Terminal" do script "history" end tell
历史记录存储和时间存储详细信息
HISTSIZE确定将有多少行写入历史文件。
HISTSIZE
决定文件的长度。
返回文章页面 历史被储存:
echo $HISTSIZE $HISTFILESIZE
注意: 您还可以在两个变量的长度中增加命令历史记录存储大小。您可以通过位于 ~/.bash_profile文件中的 HISTSIZE和 HISTFILESIZE环境变量来实现这一点。
~/.bash_profile
可以通过修改 ~/.bash_profile来实现这一点,用 大小表示的数字占位符代表的是数字,行值作为例子:
export HISTFILESIZE=SIZE # Example 1000 export HISTSIZE=SIZE # Example 10000
Pre macOS 11 Big Sur
cat ~/.bash_history
HISTFILESIZE将只设置一个最大历史值,该值在会话启动时存储到历史文件中。HISTSIZE将具体确定将存储多少行,或者换句话说,在会话的 结束中编写多少行。如果设置的 HISTFILESIZE被确定为比设置的 HISTSIZE大的值,则不会查看比设置的 HISTSIZE大的历史记录。原因是 历史文件被 HISTSIZE覆盖,除非使用 histappend选项转换为 开始。
histappend
您也可以使用 histappend来追加历史记录,如果 histappend shell 选项被打开,则行被追加到历史记录文件中。否则,覆盖的替代方案将继续执行。
Bash GNU-hisappend
macOS 11 Big Sur
nano ~/.zprofile
修改历史环境变量,设置为一个值:
export HISTFILESIZE=1000 export HISTSIZE=SIZE=1000
运行 source命令可以用来将任何函数文件加载到当前的 shell 脚本或命令提示符中。
source
source ~/.zprofile echo $HISTSIZE $HISTFILESIZE
产出:
1000 1000
存储历史记录的输出:
cat ~/.zsh_history
你亦可尝试以下方法:
history | grep 'git'
其中“ git”是您要查找的命令。