Mostra itens de histórico mais antigos ou mais recentes com o comando history em zsh

6

Eu digitei o comando history e ele me mostrou os 10 últimos comandos executados por mim. Agora eu queria ver os últimos 20 comandos executados por mim assim (depois de ler a documentação):

An argument of n lists only the last n lines.

Eu digitei history 20 . Isso me mostrou todos os comandos a partir do comando número 20 para o comando atual que estava em algum lugar por volta de 2000. Então, eu tentei %código% e isso funciona. Mostra-me os últimos 20 comandos. Mas isso não é o que é dito na documentação.

Além disso, history -20 deve excluir o comando nesse deslocamento. Mesmo isso não funciona no meu zsh.

Isso é direto da minha shell zsh:

    
por user590849 08.08.2014 / 01:10

2 respostas

6

Em zsh, history é um alias para fc -l 1 , portanto, quando você fizer history -20 , ele será substituído por fc -l 1 -20 , o que não funcionará, então use fc diretamente:

➜  ~  fc -l -20
10095  grep -R PAPER /usr/lib/locale/
10096  man locale
10097  man 7 locale
10098  mc
10099  history
10100  history --help
10101  run-help history
10102  history 20
10103  history 1 20
10104  history -l 20
10105  fc
10106  history -l 20
10107  type history
10108  fc -l ..20
10109  fc -l -20
10110  history -l -20
10111  history -20
10112  fc -l -20
10113  type history
10114  fc -l 1 -20

e você ficará bem.

    
por 08.08.2014 / 01:39
3

A primeira coisa a saber, em zsh , history que significa fc -l .

Em seguida, leia man zshbuiltins , seção sobre fc comando:

Select a range of commands from first to last from the history list. The arguments first and last may be specified as a number or as a string. A negative number is used as an offset to the current history event number. A string specifies the most recent event beginning with the given string. All substitutions old=new, if any, are then performed on the commands.

...

If first is not specified, it will be set to -1 (the most recent event), or to -16 if the -l flag is given. If last is not specified, it will be set to first, or to -1 if the -l flag is given.

Como o documento dizia, se um número negativo é usado, é um deslocamento para o histórico atual. Então history -20 list comando do atual para 20 comando antes.

Se você fornecer um número history 20 , zsh acha que é first to last form. Nesse caso, first é definido como 20, mas last é omitido. Portanto, last está definido como -1 porque fc -l é usado.

    
por 08.08.2014 / 06:57