Histórico de pesquisa de várias sessões bash somente quando Ctrl + R é usado, não quando as teclas de seta são usadas

4

Eu geralmente tenho várias sessões de bash abertas. Eu quero que o histórico de várias sessões apareça ao fazer uma pesquisa (com Ctrl + R). Quando as teclas de seta são usadas, apenas o histórico atual da sessão bash deve aparecer.

Muitas perguntas do stackexchange estão relacionadas ao armazenamento do histórico de várias sessões. Eu já uso, mas minha necessidade é um pouco diferente.

    
por prasannatsm 04.05.2015 / 07:53

1 resposta

1
Primeiro, não há uma solução limpa para o seu problema sem reimplementar algum componente chave de como o shell (bash, neste caso) lida com o histórico. Abaixo está uma solução que mantém seu histórico local para que as setas funcionem conforme o esperado. Ctrl-r, por sua vez, está vinculado a pesquisar sua história global. A solução depende de um excelente utilitário para pesquisar em seu histórico chamado hh . Abaixo estão as instruções para configurar tudo.

Adicione a um arquivo de inicialização ~/.profile , ~/.bash_profile ou ~/.bashrc :

# Whenever a command is executed, write it to a global history
export PROMPT_COMMAND="history -a ~/.bash_history.global"

# On C-r run the swap_history_reverse.sh script, 
bind -x '"\C-r": "~/swap_history_reverse.sh"'

Crie o seguinte script ~/swap_history_reverse.sh :

#! /usr/bin/env bash

# Point hh to global history
export HISTFILE=~/.bash_history.global

# Reverse search
hh

# Restore local history
export HISTFILE=~/.bash_history 

Torne o script executável:

chmod +x ~/swap_history_reverse.sh

Instale hh , consulte INSTALAR .

Quando tudo estiver pronto, abra um novo shell e execute-o.

    
por 02.07.2015 / 07:21