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 に固有です。それはかなり不可解です:何かがシェルを引き起こしているようですか、またはsed
何らかの形でコマンドの壊れた部分を端末にエコーしているようですか? ただし、常にコマンドの正しい出力の前にあります。あのドル記号はどこから来たの?
(私のコマンドの色(>
私のプロンプトである曲がっていないように見えるシアンのUnicode文字の後に来る)と混同しないでください、私はzshで構文の強調表示を使用します)