在 OSX 上:
bash-3.2$ echo "abc" | sed 's/b/\x1b[31mz\x1b[m/'
ax1b[31mzx1b[mc
而在 Linux 上:
$ echo "abc" | sed 's/b/\x1b[31mz\x1b[m/'
azc
z 正确显示为红色。
这是 bash 3.2 的限制吗?我在这里的 Linux 测试运行 bash 4.1.2。
奇怪的是在我工作的 linux 环境中,bash 的版本低于 3.2,它也可以在那里工作。
此外,这可能是相关的,但可能不是:
bash-3.2$ echo "abc" | sed 's/b/^[[31mz^[[m/'
31mz$'m/'azc
同样,特定于 BSD sed。这很令人费解:似乎有什么东西导致了 shell 或者sed
以某种方式将命令的某些受损部分回显到终端?然而,它总是在命令的正确输出之前。那个美元符号是哪里来的?
(不要被我的命令中的颜色混淆(在我的>
提示中看起来不太弯曲的青色 unicode 字符之后),我使用 zsh 的语法突出显示)