실행 가능한 명령 및 제어 시퀀스를 명명된 파이프에 어떻게 에코합니까?

실행 가능한 명령 및 제어 시퀀스를 명명된 파이프에 어떻게 에코합니까?

명명된 파이프가 있습니다.

> ls -l
total 0
prw-r--r--  1 ivan  staff  0 Aug 24 08:32 fifo

터미널에서 무한 루프로 읽었습니다.

> while true; do sh -c "$(cat fifo)"; done

또 다른 예에서는 파이프에 실행 가능한 명령을 작성합니다.

> echo 'rspec path/to/example_spec.rb' > fifo

내 첫 번째 터미널 실행 명령은 다음과 같습니다.

> while true; do sh -c "$(cat fifo)"; done
.........

Finished in 0.00194 seconds (files took 0.10327 seconds to load)
9 examples, 0 failures

이제 커서 모양을 에서 으로 변경하는 제어 시퀀스를 보내고 싶습니다 _. 두 번째 터미널에서 다음을 실행합니다.

> printf '\e[4 q' > fifo

그러나 터미널을 읽으면 잘못된 문자가 보고됩니다("command"에 "c"가 누락되어 있음에 유의).

sh: ommand not found

노력했지만 \e소용이 없었습니다. 나는 또한 echo를 사용해 보았지만 OSX를 사용하고 있으며 BSD에는 echo 옵션이 없습니다.\033^[x1Becho-e

적절하게 이스케이프된 제어 시퀀스를 어떻게 보내나요?

답변1

shfifo를 통해 이스케이프 시퀀스와 텍스트를 전송하려는 경우 이는 중복됩니다. 다음을 수행할 수 있습니다.

while true; do cat fifo; done

관련 정보