cronジョブのtputは太字のテキストを出力しません。

cronジョブのtputは太字のテキストを出力しません。

帰ってきたらとても奇妙な行動をしました。

Linux Redhatシステムでこのコマンドを実行すると、

echo "$(tput bold)" start write to log  "$(tput sgr0)" >> /tmp/log.txt

私たちは終わった。太字存在する/tmp/log.txt

more /tmp/log.txt
start write to log  <----- BOLD TEXT

しかし、/etc/cron.dの下のcronジョブで実行した場合

*/1 * * * * root [[ -f /home/mng_log.sh ]] &&   echo "$(tput bold)" start write to log  "$(tput sgr0)" >> /tmp/log.txt

これでテキストは太字で/tmp/log.txt表示されません

cronジョブのcliが太いテストを書いていないのはなぜですか?

ベストアンサー1

tput bold通知に使用される文字の順序を作成します。現在の端末実行中で、太字で始まります。

環境変数の値に基づいて端末の種類を知っています$TERM。この変数は端末エミュレータまたはgetty

tput特定の端末タイプの特定のプロパティに使用されるシーケンスを調べるためのクエリtermcapまたはデータベース。terminfo

たとえば、で実行されている場合、またはxtermのように$TERM見え、(およびほとんどの最新のターミナルエミュレータ)で認識されるシーケンスは太字で始まりで作成されます。で実行すると、代わりに送信されます。xtermxterm-256colortput bold\e[1mxtermhpterm\e&dB

スクリプトがで実行されると、cron端末で実行されません。太字のプロパティを有効にするためにシーケンスを送信するには、$TERM環境変数を設定してどの端末であるべきかを知らせる必要があります。

たぶん、次のようなものがあります。

export TERM="${TERM-xterm}" # set $TERM to xterm if not set
printf '%s\n' "$(tput bold)start write to log$(tput sgr0)" >> /tmp/log.txt

その後、/tmp/log.txt回転するxtermシーケンスが含まれます。勇敢な存在する。ファイルの内容が xterm 端末エミュレータに転送されると、太字で表示され、他の端末では YMMV と表示されます。

おすすめ記事