6

タイトルとして、expectシェルでカラーテキストを使用する方法はありますか?以下のシェルスクリプトechoコマンドのように。

echo -e "\033[32m Hello World"
4

1 に答える 1

6

私はかなり前からこの質問に対する答えに苦しんでいましたが、今やっと答えが出たと思います。

仕組みは033、<ESC>文字を[送信してから、セミコロンで区切られたANSIエスケープコードを送信すること[ですが、特殊文字と同様に、バックスラッシュでエスケープする必要があります。次に、ANSIシーケンスの送信に進み、。で区切りmます。

ANSIブレークシーケンスの例

  • 0リセット/通常すべての属性をオフ

  • 1太字または強度の増加

  • 4下線:単一

  • 30テキストの色を黒に設定

  • 31テキストの色を赤に設定

  • 32テキストの色を緑に設定

完全なリストはここにあります:http: //en.wikipedia.org/wiki/ANSI_escape_code

例:

puts "\033\[01;31m" # This will turn text red
puts "~~~This text is red and bold\n" 
puts "\033\[0;32m" # This will turn text green
puts "This text is green and bold switched off\n"

ただし、このオプションでは機能しないようです-nonewline。これは少し面倒です。ただし、send_userコマンドは、処理がはるかに優れており、制御下にあることがはるかに優れているようです。

send_user "\033\[01;31mRed bold \033\[0;32mGreen again"

これを変数と組み合わせて、出力を読みやすくすることもできます。

set green "\033\[0;32;40m"
set red "\033\[1;31m"
send_user "${red}Red bold ${green}Green again"
于 2013-03-05T14:54:57.330 に答える