Bash

如何在 zshell 和 bash 中使用相同的歷史 20 別名?

  • November 9, 2017

似乎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 命令顯示較舊或較新的歷史記錄項

這並不像我想像的那麼困難。將此添加到我的~/.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 命令顯示較舊或較新的歷史記錄項

好像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 }
% 

引用自:https://unix.stackexchange.com/questions/403414