在 macOS 终端上搜索命令历史记录
Searching your command history on macOS terminal
在 macOS 终端中搜索我的命令历史记录的快捷方式是什么?
历史可供搜索多长时间?它存储在哪里?
如何使用 Ctrl+
R 在 [=14= 中的 Terminal
实用程序中搜索] 用于搜索命令历史记录,
dudeOnMac: freddy$ whoami
freddy
(reverse-i-search)`who': whoami
控制 history
保留多长时间取决于一些 shell
环境变量,HISTFILESIZE
只不过是您要保留的历史行数.在.bash_profile
中为其设置一个巨大的值使其生效
HISTFILESIZE=10000000
命令历史记录存储在您的主文件夹下一个名为 .bash_history 的隐藏文件中。要在 nano 中查看它的内容,请在终端中使用以下命令:
nano ~/.bash_history
或使用您的文本编辑器打开(默认为 TextEdit):
open ~/.bash_history
在我的例子中,这是一个很长的列表,当我滚动浏览时,似乎最后一个 ~500 命令存储在这里。
要查看或调用最近使用的命令,您只需按向上箭头键即可依次回读存储在 .bash_history.
中的历史记录
使用 Ctrl
+ R
在终端中搜索历史命令。
(reverse-i-search)`':
键入您要搜索的命令的任何子字符串,例如grep
(reverse-i-search)`grep': grep "XYZ" abc.txt
它将return匹配您输入的最新命令。如果这不是您要搜索的命令,请继续按 Ctrl
+ R
进行下一次匹配,直到找到您的命令。
找到命令后,按 Return
执行它。
如果您想在 运行 没有任何命令的情况下退出,请按 Ctrl
+ G
PS: 这个答案与 Inian 的建议相同,只是提供了更多细节以便于使用。
从 Unix 和 Linux Stack Exchange 上的 this answer 迁移到 SO 的答案:
按ctrl+R将打开历史搜索向后。现在开始输入您的命令,这将给出第一个匹配项。通过再次(一次又一次)按 ctrl+R,您可以循环浏览历史记录。
如果你喜欢超级懒惰,你可以绑定 up/down 箭头键来执行这个搜索,我在我的 .inputrc
中有以下将 up/down 箭头键绑定到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
只需键入一些内容(可选),然后按 up/down 箭头键在历史记录中搜索以您键入的内容开头的命令。
要在 .bashrc
而不是 .inputrc
中执行此操作,您可以使用:
bind '"\e[A": history-search-backward'
使用这个命令-
history
这适用于 OSX 和 Linux。
历史存储在 ~/.zsh_history 或 ~/.bash_history 或 ~/.history 中,具体取决于您的 shell.
根据您的系统,历史记录可存储 1000 或 2000 行。
echo $HISTSIZE
对于那些想从历史中搜索特定命令的人,您可以使用reverse-i-search
。反向搜索允许您输入作为您要查找的命令的一部分的任何关键字,然后 reverse search
导航回历史记录,逐步匹配以前的命令并 return 整个命令。
当一个人不记得他们经常使用的所有方便冗长的命令时,它特别有用。要进行反向搜索 ctrl
+ R
并键入您拥有的任何线索,这将 return 您之前的命令与您键入的单词相匹配。然后一旦找到命令,点击 Enter
直接从搜索中执行它。
为了方便搜索历史,我建议你安装fzf
。
It's an interactive Unix filter for command-line that can be used with any list; files, command history, processes, hostnames, bookmarks, git commits, etc.
只需安装它,单击 ctrl
+ R
,您将滚动浏览 shell 历史记录,无需 grep
或等待年龄直到弹出您正在等待的命令。
支持MacOS,Linux甚至Windows.
对于 macOS Big Sur,文件现在是 .zsh_history
如果您在终端中执行 vi ~/.zsh_history,您可以通过按 / 然后按搜索词来使用正则表达式。
# USAGE: find.history cd
# filter commands in shell history by a search term and execute the selected command
function find.history {
eval $(history | grep "" | tail | awk '{=""}1' | tail -r | peco)
}
您需要安装 peco
。
[$]> brew install peco
Automation AppleScript
由于您提到通过 Terminal.app 查看您的历史记录是一种快速解决方案。您可能想要自动化或快速查看历史记录,也许是从码头。您可以使用 AppleScript 应用程序作为一种替代方法。与许多其他方法一样,这是创建简单快捷方式的可选方法。
- 打开 AppleScript 编辑器应用程序。
- 为历史记录添加您指定的命令。
- 代码
tell application "Terminal"
do script "history"
end tell
- 另存为应用程序,为了方便拖到停靠。
History Storage & Time Stored Details
HISTSIZE
确定将多少行写入历史文件。
HISTFILESIZE
确定文件的长度。
找出历史存储了多长时间:
echo $HISTSIZE $HISTFILESIZE
注意:您还可以在两个变量的长度上增加您的命令历史记录存储大小。您可以通过位于 ~/.bash_profile
文件中的 HISTSIZE
和 HISTFILESIZE
环境变量来实现。
可以通过修改~/.bash_profile
来实现,数字占位符SIZE代表的是数字,行值,例如:
export HISTFILESIZE=SIZE # Example 1000
export HISTSIZE=SIZE # Example 10000
Pre macOS 11 Big Sur
cat ~/.bash_history
HISTFILESIZE
将仅设置一个最大历史值,该值在会话启动时存储到历史文件中。 HISTSIZE
将具体确定将存储多少行,或者换句话说,在会话的 end 处写入。如果集合 HISTFILESIZE
被确定为比集合 HISTSIZE
大的值,您将不会查看大于集合 HISTSIZE
的历史记录。原因是 history 文件被 HISTSIZE
覆盖,除非使用 histappend
选项打开 ON.
您也可以使用 histappend
来附加历史记录,如果 histappend
shell 选项打开,行将附加到历史文件。否则,覆盖的替代方案继续进行。
macOS 11 Big Sur
nano ~/.zprofile
修改history环境变量,设置为一个值:
export HISTFILESIZE=1000
export HISTSIZE=SIZE=1000
运行 source
命令可用于将任何函数文件加载到当前 shell 脚本或命令提示符中。
source ~/.zprofile
echo $HISTSIZE $HISTFILESIZE
输出:
1000 1000
存储一些历史记录的输出:
cat ~/.zsh_history
您也可以尝试以下方法:
history | grep 'git'
其中 'git' 是您要查找的命令。
在 macOS 终端中搜索我的命令历史记录的快捷方式是什么?
历史可供搜索多长时间?它存储在哪里?
如何使用 Ctrl+
R 在 [=14= 中的 Terminal
实用程序中搜索] 用于搜索命令历史记录,
dudeOnMac: freddy$ whoami
freddy
(reverse-i-search)`who': whoami
控制 history
保留多长时间取决于一些 shell
环境变量,HISTFILESIZE
只不过是您要保留的历史行数.在.bash_profile
中为其设置一个巨大的值使其生效
HISTFILESIZE=10000000
命令历史记录存储在您的主文件夹下一个名为 .bash_history 的隐藏文件中。要在 nano 中查看它的内容,请在终端中使用以下命令:
nano ~/.bash_history
或使用您的文本编辑器打开(默认为 TextEdit):
open ~/.bash_history
在我的例子中,这是一个很长的列表,当我滚动浏览时,似乎最后一个 ~500 命令存储在这里。
要查看或调用最近使用的命令,您只需按向上箭头键即可依次回读存储在 .bash_history.
中的历史记录使用 Ctrl
+ R
在终端中搜索历史命令。
(reverse-i-search)`':
键入您要搜索的命令的任何子字符串,例如grep
(reverse-i-search)`grep': grep "XYZ" abc.txt
它将return匹配您输入的最新命令。如果这不是您要搜索的命令,请继续按 Ctrl
+ R
进行下一次匹配,直到找到您的命令。
找到命令后,按 Return
执行它。
如果您想在 运行 没有任何命令的情况下退出,请按 Ctrl
+ G
PS: 这个答案与 Inian 的建议相同,只是提供了更多细节以便于使用。
从 Unix 和 Linux Stack Exchange 上的 this answer 迁移到 SO 的答案:
按ctrl+R将打开历史搜索向后。现在开始输入您的命令,这将给出第一个匹配项。通过再次(一次又一次)按 ctrl+R,您可以循环浏览历史记录。
如果你喜欢超级懒惰,你可以绑定 up/down 箭头键来执行这个搜索,我在我的 .inputrc
中有以下将 up/down 箭头键绑定到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
只需键入一些内容(可选),然后按 up/down 箭头键在历史记录中搜索以您键入的内容开头的命令。
要在 .bashrc
而不是 .inputrc
中执行此操作,您可以使用:
bind '"\e[A": history-search-backward'
使用这个命令-
history
这适用于 OSX 和 Linux。
历史存储在 ~/.zsh_history 或 ~/.bash_history 或 ~/.history 中,具体取决于您的 shell.
根据您的系统,历史记录可存储 1000 或 2000 行。
echo $HISTSIZE
对于那些想从历史中搜索特定命令的人,您可以使用reverse-i-search
。反向搜索允许您输入作为您要查找的命令的一部分的任何关键字,然后 reverse search
导航回历史记录,逐步匹配以前的命令并 return 整个命令。
当一个人不记得他们经常使用的所有方便冗长的命令时,它特别有用。要进行反向搜索 ctrl
+ R
并键入您拥有的任何线索,这将 return 您之前的命令与您键入的单词相匹配。然后一旦找到命令,点击 Enter
直接从搜索中执行它。
为了方便搜索历史,我建议你安装fzf
。
It's an interactive Unix filter for command-line that can be used with any list; files, command history, processes, hostnames, bookmarks, git commits, etc.
只需安装它,单击 ctrl
+ R
,您将滚动浏览 shell 历史记录,无需 grep
或等待年龄直到弹出您正在等待的命令。
支持MacOS,Linux甚至Windows.
对于 macOS Big Sur,文件现在是 .zsh_history
如果您在终端中执行 vi ~/.zsh_history,您可以通过按 / 然后按搜索词来使用正则表达式。
# USAGE: find.history cd
# filter commands in shell history by a search term and execute the selected command
function find.history {
eval $(history | grep "" | tail | awk '{=""}1' | tail -r | peco)
}
您需要安装 peco
。
[$]> brew install peco
Automation AppleScript
由于您提到通过 Terminal.app 查看您的历史记录是一种快速解决方案。您可能想要自动化或快速查看历史记录,也许是从码头。您可以使用 AppleScript 应用程序作为一种替代方法。与许多其他方法一样,这是创建简单快捷方式的可选方法。
- 打开 AppleScript 编辑器应用程序。
- 为历史记录添加您指定的命令。
- 代码
tell application "Terminal"
do script "history"
end tell
- 另存为应用程序,为了方便拖到停靠。
History Storage & Time Stored Details
HISTSIZE
确定将多少行写入历史文件。
HISTFILESIZE
确定文件的长度。
找出历史存储了多长时间:
echo $HISTSIZE $HISTFILESIZE
注意:您还可以在两个变量的长度上增加您的命令历史记录存储大小。您可以通过位于 ~/.bash_profile
文件中的 HISTSIZE
和 HISTFILESIZE
环境变量来实现。
可以通过修改~/.bash_profile
来实现,数字占位符SIZE代表的是数字,行值,例如:
export HISTFILESIZE=SIZE # Example 1000
export HISTSIZE=SIZE # Example 10000
Pre macOS 11 Big Sur
cat ~/.bash_history
HISTFILESIZE
将仅设置一个最大历史值,该值在会话启动时存储到历史文件中。 HISTSIZE
将具体确定将存储多少行,或者换句话说,在会话的 end 处写入。如果集合 HISTFILESIZE
被确定为比集合 HISTSIZE
大的值,您将不会查看大于集合 HISTSIZE
的历史记录。原因是 history 文件被 HISTSIZE
覆盖,除非使用 histappend
选项打开 ON.
您也可以使用 histappend
来附加历史记录,如果 histappend
shell 选项打开,行将附加到历史文件。否则,覆盖的替代方案继续进行。
macOS 11 Big Sur
nano ~/.zprofile
修改history环境变量,设置为一个值:
export HISTFILESIZE=1000
export HISTSIZE=SIZE=1000
运行 source
命令可用于将任何函数文件加载到当前 shell 脚本或命令提示符中。
source ~/.zprofile
echo $HISTSIZE $HISTFILESIZE
输出:
1000 1000
存储一些历史记录的输出:
cat ~/.zsh_history
您也可以尝试以下方法:
history | grep 'git'
其中 'git' 是您要查找的命令。