機能 ショートカットキー
リファレンス(参考URL)一覧へ移動 R
記事URLをMarkDownとしてコピー Ctrl+M
前のコードタグへ移動 Ctrl+←
次のコードタグへ移動 Ctrl+→
ヘルプを表示・非表示 H
Tips
- ショートカットキーは記事上で有効です。ヘッダー/フッター付近では機能しないことがあります。
- コードタグ移動機能がうまく動かないときは、Shift+F5でページを更新してみてください。
- このウィンドウを閉じるには、Hキーをもう一度押してください

bashで標準出力の特定の文字列を色付けする

プログラミング

pipとかインストール系のコマンドの出力でありがちなのが、できなくてエラーが出てるっぽいけど一体全体どこでエラー出てるのがわからないっていう事態。
stderrじゃなくてstdoutなのでそこらへんで色分けが自動でされない場合や、文字列がerrorじゃなくてfailureやらfailedやらlostとかそういう文字列のとき、せめてハイライトしてあれば見つけやすい。

こうする。

ls | tail -3 | GREP_COLOR='01;31' grep --color -P "zen|"
# or
# ls | tail -3 | grep --color -P "zen|"

文字列zenを赤色にハイライトする例。

肝は、zen|の部分。zenだけだとzenが含まれていない列は出力がされなくなるのがgrepの仕様。こうしてやることでそれを防ぐ。
後述するが、zen|$でもいいっぽい。(未検証)明示的にやるならこちらのやり方のほうが分かりやすそうではある。

Color specific words in Linux terminal whenever they appear – Stack Overflow

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_4c5343dd-f4e2-4630-884c-1c320a4e32b9.png

こういう方法もあるっぽい。ただegrepってのが詳しくないので検証はしてません。(察するにregex標準という感じだろうか。)

tail -f myfwlog | GREP_COLOR='01;36' egrep --color=always 'ssh|$' | GREP_COLOR='01;31' egrep -i --color=always 'drop|deny|$'

bash – Grep output with multiple Colors? – Stack Overflow

こちらも参考に。

egrep --color "\b(PASS|FAIL)\b|$"

How do you colorize only some keywords for a bash script? – Unix & Linux Stack Exchange

bashのカラーコードはこちらで分かります。
32は緑、31は赤、etc

bash:tip_colors_and_formatting – FLOZz’ MISC

aliasの例。なお、赤だとどっちの出力なのかわかりずらいのでカラーは36 Cyanとしている。

alias colorizeError="GREP_COLOR='01;36' grep --color -P 'deny|failure|failed|error|lost|'"

この記事で欲しい情報が見つからなかった方へ

この記事の更新情報がある場合があります。
この記事は以下の記事とも関連性があると思われます。

yourls APIを使って最速で短縮URL作るBash関数を作る
Bash上でPython経由でjsonパース
bash stderr(エラー出力)を色付け
WSL bashでネットワークディレクトリ(共有フォルダ)にアクセス
Bashの関数でデフォルトの引数
BashからPowershellやcmdを実行するなら
Telegram APIでUbuntu BashからcurlコマンドでTelegramにメッセージを送信する


管理人の方針で、既存の記事の編集はせず、新しい情報や大きな既存情報の更新があった場合には、新しい記事として公開することになっています。
当記事で欲しい情報が見つからなかった・解決に至らなかった場合、これらのリンクがお役に立てるかも知れません。

どうやってこの関連記事を生成しているの?
この機能のPHPソースコード(2500行)

コメントを残す

Close Menu