Buffer de memória em um script bash

2

Eu terminei recentemente um script que pedirá um nome de host e levará automaticamente o argumento do function e ssh para um dos meus servidores de trabalho.

Aqui está uma cópia do meu script:

#!/bin/bash
echo "Provide hostname: "
read host

createSSHFunction()
{
    arg1=$1
    ssh $host
}
createSSHFunction $host

while((1)); do ~/sshScript.sh; done

O que eu notei é que eu quero ssh em um dos servidores e eu me desconectei, por instinto eu pressionarei a tecla seta para cima para exibir novamente o mesmo argumento que eu coloquei na última vez. Aqui está um exemplo disso:

    Provide hostname:
    crf-alpha
    support@localhost's password:
    Last login: Thu Jul 24 12:16:33 2014 from localhost
    [support@crf-alpha ~]$
Connection to localhost closed.
Provide hostname:
^[[A

Existe uma maneira de codificar no meu script atual onde ele armazenará qualquer coisa que eu digite por último? Então, por exemplo, eu ssh no crf-alpha e eu me desconecto. Meu script será executado novamente, solicitando que eu insira um nome de host. Eu gostaria que, se eu pressionasse a tecla de seta para cima, a última entrada que eu inserisse fosse reexibida, então, neste caso, crf-alpha em vez do símbolo estranho eu sempre obter.

    
por ryekayo 24.07.2014 / 18:20

1 resposta

1

Se você pode instalar o utilitário rlwrap , então é tão simples quanto fazer

rlwrap ./yourscript.sh

Isso permitirá que você use as teclas de matriz para cima e para baixo para navegar pelo histórico, bem como as teclas de seta para a direita e para a esquerda para editar o comando atual, para programas que não o suportam.

    
por 24.07.2014 / 19:26