着色尾巴输出bash

时间:2018-03-06 21:01:24

标签: linux bash

我有一个使用

的聊天脚本
shouldShowRequestPermissionRationale

显示聊天。邮件被写入,这样当你回复它时,它会以彩色文本形式输出。

chatlog.txt:

tail -f chatlog.txt

如果我使用此代码显示它可以正常工作:

20:39 \033[4;33musername\033[0m: sowith all of my experiance
20:39 \033[4;33musername\033[0m: we shall proveil
20:40 \033[4;33musername\033[0m: the taxi jobs are very
20:40 \033[4;33musername\033[0m: yes
21:02 \033[4;34mJacob\033[0m has joined the chat!

output of the code 但如果我用var=$(tail chatlog.txt) echo -e "$var" 显示它,则没有颜色。我尝试了其他解决方案,但似乎都没有。

1 个答案:

答案 0 :(得分:1)

您的输出包含文字转义序列;因此,您需要的只是一个程序,它将识别这些并用它们引用的字符替换它们。在符合POSIX的shell中,printf %b将执行此操作。

因此:

tail -f chatlog.txt | while IFS= read -r line; do printf '%b\n' "$line"; done

有关while read机制的一般性讨论,请参阅BashFAQ #1。提出一些重点:

  • 使用IFS=可以防止从行修剪前导和尾随空格。
  • 使用-r参数read可以防止read删除文字反斜杠。