グリーティングの色が変わるいくつかのお祝いカードのように、色を動的に変更し続ける(指定された時間間隔の有無にかかわらず)、コンソールにカラーテキストを印刷する方法はありますか?
以下を使用してカラーテキストを印刷する方法を知っています。
echo eg: echo -e "\e[1;34m Hi dude, Welcome to the Matrix \e[0m"
しかし、私はこのテキストの色が変わり続けたいと思います。
実際に可能ですか?
答え1
色を繰り返し変更する指示があるテキストは印刷できません。あなたできる次のように、元のテキストの上に別の色でテキストを作成します。
i=0
while true
do
echo -en "\r\e[1;3${i}mWelcome to the Matrix\e[0m"
i=$(((i+1)%8))
sleep 0.25
done
これにより、すべての明るい色が循環しながら毎秒4回変わります。\r
カーソルを行の先頭に戻すキャリッジリターン文字は、出力のecho -n
終わりに改行文字を抑制します。
これは単一ラインと出力の最後のラインでのみ機能します。さらに進むために、別のエスケープセットを使用することもできます。\e[3A
カーソルを3行上に移動してテキストを書き換えることができます。
i=0
while true
do
echo -e "\e[0;3$(((i+1)%8))mHello!\e[0m"
echo -e "\e[1;3${i}mWelcome to the Matrix\e[0m"
i=$(((i+1)%8))
sleep 0.25
echo -e "\e[3A"
done
これにより、2行が異なる色で作成され、両方が常に変更されます。
これらはすべてANSIエスケープコード、そしてたくさんあります。よく使う場合は、このようなライブラリ呪い役に立つかもしれません。tput
また、便利なツールであり、生のエスケープコードを使用するよりも移植性が優れています。元のコードを使用すると、B / C / Dは下/右/左です。
したがって、絶えず変化するテキストを無限に「そのまま」置くことは不可能です。プロセスをバックグラウンドに置くか、そうでない場合は、特定のテキスト&
部分が無期限に保持されるように注意深く許可できます。カーソルを正しい位置に移動し、テキストを書き換えてから再度移動できます。最終目標が何であるかによって役立つ例は次のとおりです。Bashプロンプトハウツーの「時計」デモ。とたくさんタスクとコラボレーション端末エミュレータを使用すると、テキストを適切にスクロールするのに十分な情報を得ることができますが、実際にはそれほど価値がありません。
厳密には、「バックエンド」と呼ばれる場所で実行される「点滅」コードがあることに注意してください。技術的には色の変化だと仮定します。<blink>
ラベルのように機能し、しばしばテキストを表示または非表示にします。普遍的にはサポートされていません。 Konsole、xterm、Linuxコンソール、およびApple端末はこれを実装しますが、他のシステムは通常は実装しません。とにかくコード5です。