Macで実行しているbashスクリプトのエラーにカラー出力を追加しようとしています。問題は、色が機能していないことです。動作しないことを示すために、最も単純なスクリプトを作成しました。
#!/bin/bash
echo -e "\e[1;31m This is red text \e[0m"
ただし、この画像に示すように、実行すると色がまったく表示されません。ただし、lsコマンドのカラー出力は正常に機能しています。
OSXには、\e
エスケープ文字をサポートしない古いバージョンのBashが付属しています。 \x1B
を使用するか、Bashを更新します(brew install bash
)。
ただし、さらに良いのは、tput
を使用することです。
つかいます \033
または\x1B
の代わりに \e
はde <Esc>
キャラクター。
echo -e "\033[1;31m This is red text \033[0m"
http://misc.flogisoft.com/bash/tip_colors_and_formatting を参照してください
別のオプションは、\e
表記を尊重するzshを使用することです。
#!/bin/zsh
スクリプトファイルでは、printf
がさらに別のオプションになる可能性があるため、末尾の"\n"
しかし。
#!/bin/bash
echo -e "\e[31mOutput as is.\e[m"
printf "\e[32mThis is green line.\e[m\n"
printf "\e[33;1m%s\n" 'This is yellow bold line.'
MacOS High Sierra 10.13.6でテスト済み:
% /bin/bash --version
GNU bash, version 3.2.57(1)-release (x86_64-Apple-darwin17)
Copyright (C) 2007 Free Software Foundation, Inc.