Você pode carregar um arquivo personalizado no próprio histórico do Bash usando o comando history
. history -r
lerá o arquivo que você nomeou como seu histórico de comandos, ou o arquivo chamado em HISTFILE
se você não nomear um:
history -r ~/custom
Depois disso, você pode usar qualquer uma das ações comuns que acessam o histórico com os dados do seu arquivo personalizado, incluindo Ctrl-R , !
expansão do histórico e assim por diante.
Se você quiser que isso seja ativado temporariamente, salve seu histórico atual, leia o arquivo personalizado e, em seguida, leia o arquivo comum no final:
$ history -w # Or -a if you prefer
$ history -r ~/custom
...
$ history -cr
history -cr
limpará o histórico na memória e o lerá no arquivo de histórico padrão $HISTFILE
. Você também pode criar aliases para encurtar esse processo.
Como alternativa, você pode adicionar valores calculados ao histórico usando history -s
. O seguinte equivale a apenas ler o arquivo:
while read command
do
history -s "$command"
done < ~/custom
Você pode adicionar quantas entradas de histórico arbitrário desejar dessa maneira, calculadas a partir de quaisquer dados disponíveis (por exemplo, ler uma lista de portas e nomes de servidores e usar history -s "ssh -p $port $servername"
). Isso funciona bem em uma função. As mesmas opções para gravar, limpar e restaurar o histórico se aplicam aqui também.
Como opção final, se você definir HISTFILE
no ambiente ao iniciar bash
, ele honrará esse arquivo como seu histórico. Você pode iniciar um novo shell a partir de um script com HISTFILE
definido adequadamente para permitir que o usuário escolha um comando: HISTFILE=~/custom bash
. Com uma construção cuidadosa, você pode fazer com que o shell termine imediatamente após executar o comando selecionado.
Ao sair do próprio Bash, rlwrap
é uma ferramenta para finalizar qualquer outra ferramenta de linha de comando no Readline . rlwrap -H ~/custom cmd...
executará um comando com o arquivo fornecido do histórico. Você pode construir esse programa para fazer exatamente o que você quer, incluindo selecionar apenas o nome do servidor com a entrada do usuário e construir o comando depois.