1

ターミナルでテキストASCIIアートを作成し、.profile色付けしようとしています。最初はcatコマンドを使用heredocしてアートを印刷するつもりでしたが、ヒアドキュメント内の色を機能させることができませんでした。だから私は汚れた修正を行いました、私はecho -e各行に使用してからそれを着色しています。もっと良い方法があれば教えてください!今、私はこの問題を抱えています。

全体像:

    _            _
 __| |_ __  __ _| |__
/ _` | '  \/ _` | / /
\__,_|_|_|_\__,_|_\_\

私が着色している​​部分:

/ _` | '  \/ _` | / /

着色:

echo -e "\033[37m/ _\` |\033[36m '  \\\033[1;35m/ _\` | / /";

出力:

/ _` | '  \033[1;35m/ _` | / /

ご覧のとおり、の間に新しい色を挿入しようとしてい\/ます。文字通り\扱っています。\033[1;35m画像を変更せずに色を変更する方法はあり\/ますか?

また、私はMacOSXLionを使用しています。

4

3 に答える 3

2

代わりに、出力の色付けにANSICエスケープシーケンスを直接使用できるBashheredocの機能を使用できます。$'string'

man bash | less -p "\\$'string'"

(
asciiart=$'
    _            _
 __| |_ __  __ _| |__
\033[37m/ _` |\033[36m \'  \\\033[1;35m/ _` | / /\033[m
\\__,_|_|_|_\\__,_|_\\_\\
'
echo "$asciiart" | sed '1d;$d'
)

読みやすさを向上させるために、figletを試してみることをお勧めします。

http://rudix.org/packages-def.html#figlet

于 2011-08-09T11:37:38.320 に答える
1

3本ではなく5本のバーで試してください\\\\\033[1;35m/

理由については、bashエスケープ\\\\して\\からecho -eに、もう一度エスケープして\。set -x(トレースモード)を有効にすると、bash処理後に実行されるコマンドが表示されます(+ xを設定して無効にします)。

于 2011-08-09T11:48:19.497 に答える
0

POSIXprintfを数行使用するだけではどうでしょうか。

printf "\e[37m/ _\` |\e[36m \....\n"

すべての厄介な脱出の問題を台無しにする代わりに?

于 2011-08-09T12:11:05.093 に答える