Como alias o histórico 20 para funcionar da mesma maneira em zshell vs. bash?

0

Parece que history [number] está retrocedido em zshell porque está usando fc . Como obtenho o history [number] para se comportar como faz no 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

Então no bash ele se comporta como eu esperaria: últimos 3 comandos. Mas em zshell está para trás: os 3 primeiros comandos do histórico. Isso é chato e eu gostaria de consertar isso.

Mais próximo que cheguei até agora:

function history {
  fc -l -$1
}

Mas isso ainda produz o histórico a partir de 1 em vez da última entrada.

Relacionados: Mostrar itens de histórico mais antigos ou mais recentes com o comando history em zsh

    
por jcollum 08.11.2017 / 22:43

2 respostas

1

Não foi tão difícil quanto achei que seria. Adicionado isso ao meu ~/.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"
}

Relacionado e útil: Mostrar itens de histórico mais antigos ou mais recentes com o comando history em zsh

    
por 08.11.2017 / 22:59
0

Parece que bash retrocede, por isso, se inverter o sinal no número ...

$ 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 }
% 
    
por 08.11.2017 / 23:03