Exibe apenas um intervalo de entradas do histórico bash

2

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

    
por Justin 20.09.2014 / 20:24

2 respostas

4

history n imprime apenas n linhas do histórico. Por exemplo:

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

Assim, podemos criar um alias em .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.

Isso é útil se você quiser manter um grande histórico, talvez até mesmo um um ilimitado . Com HISTCONTROL=ignoreboth:erasedups e revista à pesquisa incremental , é uma ocasião especial quando você realmente executa o comando history .

    
por muru 20.09.2014 / 20:28
3

Definindo HISTFILESIZE e HISTSIZE , você pode restringir o tamanho do comando do histórico.

Por exemplo, HISTFILESIZE=100 e HISTSIZE=100 . Ele irá restringir o arquivo de histórico para armazenar 100 linhas e HISTFILE , que armazenará seu comando de sessão de cura na memória para 100 linhas.

Quando o shell é inicializado, o histórico é inicializado a partir do arquivo nomeado pela variável HISTFILE (default ~ / .bash_history). O arquivo nomeado pelo valor de HISTFILE será truncado, se necessário, para conter não mais que o número de linhas especificado pelo valor da variável HISTFILESIZE .

Você pode adicionar HISTFILESIZE=100 e HISTSIZE=100 ao seu arquivo ~/.bashrc . Mude o 100 com o número que você deseja.

Explicação

HISTFILESIZE=10 e HISTSIZE=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. No final dos seus 50 comandos, apenas os comandos 41 a 50 estão na sua lista de histórico, cujo tamanho é determinado por HISTSIZE = 10.
  4. Você encerra sua sessão.
    1. Assumindo que histappend não esteja habilitado, os comandos 41 a 50 serão salvos em seu HISTFILE, que agora possui os 10 comandos que ele 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ê acabou de digitar na sessão que acabou de concluir.
  6. Quando você inicia uma nova sessão, começa em 1 com um HISTFILE de HISTFILESIZE = 10.

HISTFILESIZE=10 e HISTSIZE=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. No final dos seus 50 comandos, apenas os comandos 46 a 50 estão na sua lista de histórico, cujo tamanho é determinado por HISTSIZE = 5.
  4. Você encerra sua sessão.
    1. Assumindo que histappend não esteja habilitado, os comandos 46 a 50 serão salvos em seu HISTFILE, que agora possui os 10 comandos que ele continha no início, mais os 5 comandos recém-gravados.
    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 5 últimos que você acabou de digitar na sessão que acabou de concluir.
  6. Quando você inicia uma nova sessão, começa em 1 com um HISTFILE de HISTFILESIZE = 10.

HISTFILESIZE=5 e HISTSIZE=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. No final dos seus 50 comandos, apenas os comandos 41 a 50 estão na sua lista de histórico, cujo tamanho é determinado por HISTSIZE = 10.
  4. Você encerra sua sessão.
    1. Assumindo que histappend não está habilitado, os comandos 41 a 50 são salvos em seu HISTFILE, que agora possui os 5 comandos que ele 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ê acabou de digitar na sessão que acabou de concluir.
  6. Quando você inicia uma nova sessão, recomeça na etapa 1 com um HISTFILE de HISTFILESIZE = 5.

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

    
por g_p 20.09.2014 / 20:26