Como obtenho o conteúdo de um arquivo de texto de uma linha no buffer de comando do bash?

1

Meu objetivo é recuperar rapidamente comandos bash salvos e editar os comandos no buffer de comando bash (por exemplo, alterar argumentos, para experimentar comandos longos e complexos). Quando eu pressionar Enter, o comando será executado e, ao pressionar Seta para Cima, você receberá o comando novamente para edição posterior.

Por exemplo, eu tenho um arquivo de texto chamado textfile , com o seguinte conteúdo: ls -l
Eu quero obter esse conteúdo de arquivo no buffer de comando para que eu receba user@ubuntu:~$ ls -l
Porque agora posso modificá-lo e re-executá-lo.

Se eu adicionar o bit de execução a textfile , posso executá-lo, mas pressionando Seta para cima, define o comando ./textfile no buffer de comando, não no conteúdo.

Da mesma forma, se eu inserir $(<textfile) , ele também executará o comando, mas pressionando Seta para cima, só me dá o comando $(<textfile) , não seu conteúdo

A única solução em que consigo pensar é fazer cat textfile e depois copiar / colar o conteúdo na janela do terminal. Bem, eu também poderia editar o arquivo, salvá-lo e executá-lo, mas isso é um incômodo para fazer cada vez. Então, existe um truque para obter o conteúdo de um arquivo no buffer de comando sem digitar ou colar?

    
por jseg-rth 09.08.2017 / 11:35

1 resposta

1

O buffer de comando ao qual você está se referindo é o arquivo de histórico bash ... um histórico de comandos bash. O buffer de histórico é gravado em ~/.bash_history quando você efetua logout do terminal. É carregado no buffer quando você faz o login.

Você pode obter a linha que deseja em seu buffer de histórico bash, anexando a linha ao seu arquivo ~ / .bash_history e, em seguida, recarregando manualmente o arquivo histórico do bash no seu buffer com o comando history -r .

Este é um exemplo:

$ echo "command wanted" >> ~/.bash_history && history -r

Agora, quando você apertar a seta para cima, você verá o "comando desejado" no seu "buffer de comando".

Com esta linha de comando, você verá o conteúdo de seu textfile quando acertar a seta para cima:

$ echo $(<textfile) && cat textfile >> ~/.bash_history && history -r

Certifique-se de ter seu textfile terminado com uma nova linha.

    
por L. D. James 09.08.2017 / 13:27