我有一个命名管道:
> 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
但都无济于事。我也尝试过使用,但我使用的是 OSX,而 BSD echo 没有选项。\033
^[
x1B
echo
-e
如何发送正确转义的控制序列?
答案1
sh
如果您只想通过 fifo 发送转义序列和文本,则这是多余的。你可以这样做:
while true; do cat fifo; done