Chcete-li obarvit textový výstup z příkazu, můžete zkusit převést výstup příkazu do sed, například takto:
váš příkaz | sed -e 's/FAIL/^[[01;31mFAIL^[[00m/g' -e 's/SUCCESS/^[[01;32mSUCCESS^[[00m/g'
Tato pravidla pro nahrazování lze také umístit do textového souboru (např. colorize.sed) a použít následující:
váš příkaz | sed -f colorize.sed
To umožní přiřazení různých barev různým shodným řetězcům. Všimněte si, že v mých příkladech '^[' znamená znak escape, nikoli karát následovaný hranatou závorkou. Znak escape lze do pravidla zadat zadáním Ctrl-V a následným stisknutím klávesy escape.
Barvy/efekty, které jsou k dispozici pro tyto kódy tty, jsou následující:
Barvy popředí:černá=30, modrá=34, azurová=36, zelená=32, fialová=35, červená=31, bílá=37, žlutá=33
Barvy pozadí:černá=40, modrá=44, azurová=46, zelená=42, fialová=45, červená=41, bílá=47, žlutá=43
Efekty:Normální=00, Tučné=01, Tlumené=02, Podtržené=04, Blikání=05, Obrácené=07, Skryté=08
Lze je také zkombinovat se středníkem, jako jsem to udělal já (tj. 01;31, aby byla tučná červená).
Všimněte si, že kód '^[00m' je nutný k deaktivaci předchozí barvy/efektu, jinak barva/efekt přetrvá i po shodném řetězci. Všimněte si také, že některé efekty nefungují (nebo nefungují, jak jsem popsal) s některými emulátory terminálu.
Doufám, že jen neopakuji to, co již řekl někdo jiný, protože jsem nečetl celou diskuzi.
Pravděpodobně je jednodušší si slova vybarvit sami, než nechat terminál, aby je vybarvil za vás. Pokud nemůžete upravovat skripty, které vytvářejí výstup, můžete je filtrovat pomocí něčeho jiného?
Na konci stupnice, který bude nejpravděpodobněji dostupný, můžete svůj výstup propojit přes grep
:
tail -F logfile | grep --color -P "FAIL|"
To odpovídá buď "FAIL" nebo "", a zvýrazní odpovídající část řetězce.
Dále můžete použít něco specializovanějšího, jak je popsáno například v tomto příspěvku na blogu.