Existe algo como gato com história?

0

É sobre um programa que funciona iterativamente - obtém a entrada de stdin e passa os resultados pela stdout. Há um conjunto de um texto conhecido que precisa ser passado para este programa e eu coloquei em um arquivo begin.txt . Então eu posso configurar um tubo

cat begin.txt - | myprogram

O problema chega mais tarde - se eu quiser enviar algo que eu já digitei (com pequenas modificações), as setas não funcionam, porque não há histórico em cat

  1. Portanto, estou procurando algo que mantenha o histórico por linha.

Inicialmente, tentei com vim e :.! myprogram , mas depois de executar a entrada (texto passado) myprogram sai e, em seguida, seu status é perdido. Eu preciso de uma maneira de manter o programa funcionando até passar meus textos / comandos.

  1. É possível executar vim de maneira a agir como um filtro em um canal de maneira contínua?
por ivand58 30.09.2018 / 17:33

2 respostas

3

Use rlwrap . O utilitário rlwrap agrupa qualquer utilitário em que você o utiliza para adquirir um histórico de ReadLine (junto com alguns recursos de edição do ReadLine, como o que você está acostumado no prompt bash ). Ele armazenará o histórico em um arquivo em $RLWRAP_HOME (ou $HOME se essa variável não estiver definida).

Com rlwrap , você seria capaz de fazer

rlwrap cat begin.txt - | myprogram

Da próxima vez que você executar isto, você terá um histórico básico que você pode rolar com as teclas Seta para cima e Seta para baixo . O histórico seria, por padrão, armazenado em ~/.cat_history .

Consulte o manual de rlwrap ( man rlwrap ) para mais informações.

    
por 30.09.2018 / 20:22
-1
cat begin.txt - << EOF
Type the 
text you want
here, terminated by a line with only
EOF

Consulte o link para obter mais detalhes sobre como isso funciona.

Tudo o que você digitar como parte disso será armazenado no histórico bash, para que você possa editá-lo no conteúdo do seu coração.

Se você quiser algo mais flexível, por que não criar um arquivo temporário e editá-lo?

cat begin.txt > /tmp/myprograminput
editor /tmp/myprograminput
cat /tmp/myprograminput | myprogram
    
por 30.09.2018 / 19:16