我创建了一个小函数,允许我在zsh上查看命令历史记录。命令history 1
将显示整个命令历史记录。运行history 1 | egrep ls
只显示包含ls
的命令。
所以我的功能看起来像这样:
h() {
if [ -z "$*" ]
then
history 1
else
history 1 | egrep "$@"
fi
}
不幸的是,这只会导致以下错误消息:
$ h ls
egrep: ls: No such file or directory
我对我的剧本中的错误感到茫然。我试图grep
和egrep
都无济于事。
答案 0 :(得分:0)
grep
或egrep
的完整路径是什么?
它可能在备用shell中运行,该shell具有不同的PATH
集。尝试使用明确的/usr/bin/grep
或/usr/bin/egrep
,看看是否可以修复任何内容。
答案 1 :(得分:0)
创建一个文件history.zsh(与原始文件略有不同):
#!/bin/zsh
h() {
if [ -z "$*" ]
then
history
else
history | fgrep "$*"
fi
}
现在获取此文件(因此“h”将刷新):
. history.zsh
并调用新函数:
$ h ls
30 h ls
31 ls
答案 2 :(得分:0)
我放弃了这个功能。关于zsh历史主题的进一步阅读使我得到了这个非常优雅的解决方案,满足了我的需求。 https://coderwall.com/p/jpj_6q
简而言之,您将其添加到.zshrc:
autoload -U up-line-or-beginning-search
autoload -U down-line-or-beginning-searc
zle -N up-line-or-beginning-search
zle -N down-line-or-beginning-search
bindkey "^[[A" up-line-or-beginning-search # Up
bindkey "^[[B" down-line-or-beginning-search # Down
现在,您可以通过输入部分字词并使用向上或向下箭头键浏览历史记录文件中的匹配项来搜索您的历史记录。