考虑这个简单的例子(以红色显示):
echo -e "\033[31mHello World\033[0m"
它在终端上以红色正确显示.现在考虑:
watch echo -e "\033[31mHello World\033[0m"
它不显示颜色.
注意:我知道通过清除和重新运行来编写一个模仿基本行为的循环很容易.但是,清除操作会导致屏幕闪烁,这在手表下不会发生
编辑:最初这个问题指定了转义序列而不是vt100序列,但这不是我所追求的,并且用单引号解决了.
可能重复:
使用unix命令"watch"的颜色?
在我的一个程序中,我想使用彩色文本作为输出,所以我使用ANSI转义序列,例如:
echo -e '\033[34mHello World\033[0m'
Run Code Online (Sandbox Code Playgroud)
它以蓝色打印"Hello World".(实际上它是一个使用"print"的Python程序,但这对问题无关紧要)
现在我想使用bash程序"watch"重复执行程序.但是当我使用"watch"执行与上面相同的行时,即
watch echo -e '\033[34mHello World\033[0m'
Run Code Online (Sandbox Code Playgroud)
文本不是蓝色,输出变为"-e 033 [34mHello World033 [0m".因此ANSI转义序列不会以某种方式解码.
有没有办法使程序"观察"尊重逃脱序列,或者是否有"观察"的替代方案来获得相同的效果?
如果它仅适用于Linux,那就没关系,因为我只使用它.
更新:所以一个解决方案是安装一个知道--color选项的更新版本的"watch".但还有其他任何方式,也许是一个类似的"观看"节目?(我不是那台机器的管理员.)
我正在编写一个旨在从命令行运行的Ruby脚本.该脚本具有相应的RSpec文件,用于验证其功能.文件夹结构是:
./main_script.rb
./spec/main_script_spec.rb
Run Code Online (Sandbox Code Playgroud)
运行rspec spec
在顶级目录按预期工作../spec/main_script_spec.rb
显示文件的测试结果.每次我更改主脚本文件或spec文件时,我都希望避免手动运行.我所有的搜索结果都会出现像guard一样的东西(据我所知)都是为Rails应用程序设计的.
如何设置RSpec以监视脚本或规范更改并使用非Rails Ruby代码自动运行?