如何为历史记录 20 添加别名,使其在 zshell 和 bash 中以相同的方式工作?

如何为历史记录 20 添加别名,使其在 zshell 和 bash 中以相同的方式工作?

看起来history [number]zshell 是落后的,因为它使用fc.我怎样才能history [number]像 bash 中那样表现出来?

➜  exec bash
bash-3.2$ history 3
   35  history 5
   36  exit
   37  history 3
bash-3.2$ 

➜ history 3
    1  pwd
    2  ..
    3  mv work Documents

➜ history
   3133  history 5
   3134  exec bash
   3135  history
   3136  history 3
   3137  history -3
   3138  history 20

所以在 bash 中它的行为就像我期望的那样:最后 3 个命令。但在 zshell 中它是倒退的:前 3 个历史命令。这很烦人,我想解决它。

到目前为止我最接近的:

function history {
  fc -l -$1
}

但这仍然会产生从 1 开始的历史记录,而不是最后一个条目。

有关的:使用 zsh 中的 History 命令显示较旧或较新的历史记录项目

答案1

这并不像我想象的那么困难。将此添加到我的~/.profile

# zshell aliases history to "fc -l"

# quick version
alias h="fc -l -50"     # last 50

# history searching
function hg {
  echo "Searching for '$1'..."
  fc -l 0 | grep "$1"
}

相关且有帮助的:使用 zsh 中的 History 命令显示较旧或较新的历史记录项目

答案2

看起来好像bash颠倒了,所以如果你翻转号码上的标志......

$ PS1='%% ' zsh -f
% echo blah
blah
% echo de
de
% echo blah
blah
% history() { num=$(( -1 * $1 )); builtin history $num }
% history 3
    2  echo de
    3  echo blah
    4  history() { num=$(( -1 * $1 )); builtin history $num }
% 

相关内容