次のようにしてttyを色付けできます。
myscript.sh:
#!/bin/bash
echo -e "This is \033[0;31mRED\033[0m"
通常、他の「親」プログラムが子myscript.sh
プロセスとして実行されている場合は、カラーコードが正しく戻され、親プログラムを実行しているシェルは子プロセスの色を表示します。
何度も動作しません。 GNU Makeは反例です
ファイル生成:
foo:
./myscript.sh
私が実行すると、make foo
出力は次のようになります
This is \033[0;31mRED\033[0m
何らかの理由でmake
子プロセスの出力をエスケープする必要があるように感じます。
make
誰もがそれを書いた人がアンチ機能を生成するためにコード(追加作業)を追加する必要があるため、これは驚くべきことだと思います。それとも、アプリケーションがmake
ttyのスイッチをオンにして、すべてが自動的にエスケープされるようにしますか?それでは、この動作を無視し、プログラムにmake
子プロセスデータを変換せずにttyに渡すように強制できますか?それとも、各プログラムは独自の方法でこの動作を制御しますか?
ベストアンサー1
問題は、スクリプトがPOSIXではないことに依存していることです。bash
機能するがmake
使用中/bin/sh
シェルの場合(例:Debian)、次のような他のプログラムです。dash
(POSIX規格に準拠したシェル)
追加資料: