web-dev-qa-db-ja.com

`cal`コマンドで休日を色で強調する方法

calまたは同様のコマンドで休日を色で強調したい。

OSXとUbuntu14を使用していますが、この機能を有効にする簡単な方法はありますか?

6
ironsand

標準のcalでは不可能だと思いますが、gcalGNUカレンダー を確認することをお勧めします。

テキストを強調表示するには、-Hオプションを渡す必要があります。

-H text
--highlighting=text
    Set highlighting sequence / marking character pairs explicitly.
    In this sense, highlighting sequences are control character sequences 
    which cause a color or intensity switch in output text. Typical control 
    character sequences are the ANSI escape sequences [...]

マニュアル :には、休日の例を正確に強調することさえあります。

For example:

-H \x20:\x20:\x1:# respectively
--highlighting=\x20:\x20:\x1:#
marks the actual day like ‘\x20actual date\x20’6 and the holiday date like 
‘\x1holiday date#’ using the given marking characters. 

-H \x1b[34;42m:\x1b[0;40m or
-H \033[34;42m:\033[0;40m or
-H \E[34;42m:\E[0;40m
defines a starting ANSI escape highlighting sequence ‘\x1b[34;42m’ used for 
actual day and ending ANSI escape highlighting sequence ‘\x1b[0;40m’ with no 
given highlighting sequence for holidays, so default highlighting sequences for 
holidays are used (non-given entries are always skipped).

例:

  • 現在の日を青で、米国/アラスカ(US_AK)の休日を今月の緑で強調表示するには:

    gcal -H '\e[34m:\e[0m:\e[32m:\e[0m' -q US_AK
    

    注:34は前景の青のANSIコードであり、32は前景の緑のANSIコードです

    結果:

    enter image description here

  • 2014年全体で、現在の日を緑の背景(31)に赤(42)で表示し、マゼンタ(33)の中国語(CN)の休日を黄色(45)で表示する

    gcal -H '\e[31;42m:\e[0m:\e[33;45m:\e[0m' -q CN 2014
    

info gcalオプションの説明の下にある-qにすべての国コードがあります。

6
jimmij