O sh
é redundante se você pretende enviar apenas seqüências de escape e texto via fifo. Você poderia fazer exatamente isso:
while true; do cat fifo; done
Eu tenho um pipe nomeado:
> ls -l
total 0
prw-r--r-- 1 ivan staff 0 Aug 24 08:32 fifo
Em um terminal, leio em um loop infinito:
> while true; do sh -c "$(cat fifo)"; done
█
Em outro, escrevo comandos executáveis para o pipe:
> echo 'rspec path/to/example_spec.rb' > fifo
Meu primeiro terminal executa o comando:
> while true; do sh -c "$(cat fifo)"; done
.........
Finished in 0.00194 seconds (files took 0.10327 seconds to load)
9 examples, 0 failures
█
Agora, gostaria de enviar uma sequência de controle para alterar a forma do cursor de █
para _
. No segundo terminal, eu corro:
> printf '\e[4 q' > fifo
Mas o terminal de leitura reporta um erro ilegível (note o "c" em falta no "comando"):
sh: ommand not found
Eu tentei \e
, 3
, ^[
e x1B
, mas tudo sem sucesso. Eu também tentei usar echo
, mas estou no OSX, e o eco BSD não possui a opção -e
.
Como posso enviar a sequência de controle com o escape correto?
O sh
é redundante se você pretende enviar apenas seqüências de escape e texto via fifo. Você poderia fazer exatamente isso:
while true; do cat fifo; done
Tags pipe escape-characters fifo