Eu quero fazer o seguinte no bash: Eu tenho um arquivo de texto, e quero chamar um script que lê o arquivo, aguarda pressionamentos de tecla de mim e cada vez que um botão correto é pressionado, ele imprime exatamente uma palavra (a próxima palavra) do textfile.
Para elaborar: digamos que o arquivo de texto se parece com o seguinte
This is my
text file
e estou procurando por botões do teclado do grupo [[:print:]]
. Então eu chamo meu script como
./script.sh textfile
, então eu pressione "A" e o This
aparece, então eu pressiono o botão Espaço, ainda só o This
, então eu digito "O" e o is
aparece, eu pressiono talvez "M" mais algumas vezes, até que todo o texto acima seja impresso e pronto.
O que eu já tenho:
Eu já sei esperar por um único pressionamento de tecla e, em seguida, fazer algo se funcionar:
while true; do
read -rsn1 input
if [[ "$input" =~ "[[:print]]" ]]; then
# do stuff on keypress
fi
done
Eu também sei ler um arquivo palavra por palavra: Leia o arquivo palavra por palavra (eu usei a resposta do usuário Lambert)
A combinação dos dois não parece funcionar como eu quero, no entanto.
Se alguém tiver alguma ideia de como fazer isso, agradeceria muito. Além disso, por favor, note se eu fiz alguma coisa não clara / errada ou se eu perguntei no lugar errado / maneira.
Editar para esclarecimentos
O Textfile pode conter um número arbitrário de linhas. Cada pressionamento de tecla deve imprimir palavras exatamente como está no Textfile, ou seja, conserva espaços e novas linhas (pense no script que quero alcançar como um cat
atrasado que imprime o arquivo inteiro de uma só vez, mas apenas Word por Word no pressionamento de tecla)