Exibir apenas um intervalo de entradas do histórico do bash

Exibir apenas um intervalo de entradas do histórico do bash

É possível definir um número fixo para o comando "histórico" mostrar apenas uma certa quantidade de itens do histórico como 100, em vez de tudo desde o início dos tempos?

Responder1

history nimprime apenas nlinhas do histórico. Por exemplo:

$ history 4
 2000  type history
 2001  help
 2002  help history
 2003  history 4
$

Portanto, podemos criar um alias em seu .bashrc:

alias h="history 100"

De help history:

history: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]
    Display or manipulate the history list.

    Display the history list with line numbers, prefixing each modified
    entry with a `*'.  An argument of N lists only the last N entries.

Isto é útil se você quiser manter um grande conjunto de históricos, talvez até mesmo umilimitado. ComHISTCONTROL=ignoreboth:erasedupsepesquisa incremental reversa, é uma ocasião especial quando você realmente executa o historycomando.

Responder2

Configuração HISTFILESIZEe HISTSIZE você pode restringir o tamanho do comando histórico.

Por exemplo HISTFILESIZE=100e HISTSIZE=100. Ele restringirá o arquivo de histórico para armazenar 100 linhas e HISTFILEarmazenará seu comando de sessão curaente na memória em 100 linhas.

Quando o shell é inicializado, o histórico é inicializado a partir do arquivo nomeado pela HISTFILEvariável (padrão ~/.bash_history). O arquivo nomeado pelo valor de HISTFILEé truncado, se necessário, para conter no máximo o número de linhas especificado pelo valor da HISTFILESIZEvariável.

Você pode adicionar HISTFILESIZE=100 e HISTSIZE=100em seu ~/.bashrcarquivo . Troque 100 pelo número desejado.

Explicação

HISTFILESIZE=10eHISTSIZE=10

  1. Você inicia sua sessão.
    1. Seu HISTFILE (arquivo que armazena seu histórico de comandos bash) é truncado para conter HISTFILESIZE=10 linhas.
  2. Você escreve 50 linhas.
  3. Ao final dos seus 50 comandos, apenas os comandos 41 a 50 estarão na sua lista de histórico, cujo tamanho é determinado por HISTSIZE=10.
  4. Você encerra sua sessão.
    1. Supondo histappendque não esteja habilitado, os comandos 41 a 50 são salvos em seu HISTFILE, que agora contém os 10 comandos que continha no início, mais os 10 comandos recém-escritos.
    2. Seu HISTFILE é truncado para conter HISTFILESIZE=10 linhas.
  5. Agora você tem 10 comandos em seu histórico – os últimos 10 que você digitou na sessão que acabou de terminar.
  6. Ao iniciar uma nova sessão, você recomeça em 1 com um HISTFILE de HISTFILESIZE=10.

HISTFILESIZE=10eHISTSIZE=5

  1. Você inicia sua sessão.
    1. Seu HISTFILE (arquivo que armazena seu histórico de comandos bash) é truncado para conter no máximo HISTFILESIZE=10 linhas.
  2. Você escreve 50 linhas.
  3. Ao final dos seus 50 comandos, apenas os comandos 46 a 50 estarão na sua lista de histórico, cujo tamanho é determinado por HISTSIZE=5.
  4. Você encerra sua sessão.
    1. Supondo histappendque não esteja habilitado, os comandos 46 a 50 são salvos em seu HISTFILE, que agora contém os 10 comandos que continha no início, mais os 5 comandos recém-escritos.
    2. Seu HISTFILE é truncado para conter HISTFILESIZE=10 linhas.
  5. Agora você tem 10 comandos em seu histórico - 5 de uma sessão anterior e os últimos 5 que você digitou na sessão que acabou de terminar.
  6. Ao iniciar uma nova sessão, você recomeça em 1 com um HISTFILE de HISTFILESIZE=10.

HISTFILESIZE=5eHISTSIZE=10

  1. Você inicia sua sessão.
    1. Seu HISTFILE (arquivo que armazena seu histórico de comandos bash) é truncado para conter no máximo HISTFILESIZE=5 linhas.
  2. Você escreve 50 linhas.
  3. Ao final dos seus 50 comandos, apenas os comandos 41 a 50 estarão na sua lista de histórico, cujo tamanho é determinado por HISTSIZE=10.
  4. Você encerra sua sessão.
    1. Supondo histappendque não esteja habilitado, os comandos 41 a 50 são salvos em seu HISTFILE, que agora contém os 5 comandos que continha no início, mais os 10 comandos recém-escritos.
    2. Seu HISTFILE é truncado para conter HISTFILESIZE=5 linhas.
  5. Agora você tem 5 comandos em seu histórico - os últimos 5 que você digitou na sessão que acabou de terminar.
  6. Ao iniciar uma nova sessão, você recomeça na etapa 1 com um HISTFILE de HISTFILESIZE=5.

Esta ótima explicação de:stackoverflow.com

informação relacionada