Display holidays in UK/England for December/2012 and January/2013 (with week numbers)

gcal -K -q GB_EN December/2012-January/2013 # Holidays for Dec/2012 and Jan/2013 with week numbers
Display the holidays in December and January for UK/England (2012/2013). Most Linux distros have "gcal" in their package manager system. If not, it is available here: http://www.gnu.org/software/gcal
Sample Output
# NB holiday days are shown in bold when you run this in bash.

    December 2012
 Su Mo Tu We Th Fr Sa CW
                    1 48
  2  3  4  5  6  7  8 49
  9 10 11 12 13 14 15 50
 16 17 18 19 20 21 22 51
 23 24 25 26 27 28 29 52
 30 31                53/0

     January 2013
 Su Mo Tu We Th Fr Sa CW
        1  2  3  4  5 53/0
  6  7  8  9 10 11 12 53/1
 13 14 15 16 17 18 19 02
 20 21 22 23 24 25 26 03
 27 28 29 30 31       04

0
By: mpb
2012-11-07 18:01:31

These Might Interest You

  • NB when you run this gcal command in your shell, holidays are highlighted but this highlighting does not show in the sample output (above). To find full details on gcal options: gcal --long-help | less Example for United States, Pennsylvania: gcal -K -q US_PA 2009 # display holidays in USA/Pennsylvania for 2009 (with week numbers) Example for Hong Kong: gcal -K -q HK 2009 # display holidays in Hong Kong for 2009 (with week numbers) Show Sample Output


    5
    gcal -K -q GB_EN 2009 # display holidays in UK/England for 2009 (with week numbers)
    mpb · 2009-03-15 10:19:52 2
  • If your locale has Monday as the first day of the week, like mine in the UK, change the two $7 into $6 Show Sample Output


    2
    cal 04 2012 | awk '{ $7 && X=$7 } END { print X }'
    flatcap · 2012-05-06 23:43:21 1
  • Choosing your year and month. You only need the gnu date command and bash. desiredDay of the week is (1..7); 1 is Monday. If you want desiredDay of week (0..6); 0 is Sunday desiredDay=6; year=2012; month=5; n=0; while [ $(date -d "$year-$((month+1))-1 - $n day" "+%w") -ne $desiredDay ]; do n=$((n+1)); done; date -d "$year-$((month+1))-1 - $n day" "+%x" Show Sample Output


    0
    desiredDay=6; year=2012; month=5; n=0; while [ $(date -d "$year-$((month+1))-1 - $n day" "+%u") -ne $desiredDay ]; do n=$((n+1)); done; date -d "$year-$((month+1))-1 - $n day" "+%x"
    ClashTheBunny · 2012-05-17 12:02:30 0
  • Display the machine "hardware name" 32 or 64 bit. "x86_64" is shown on 64 bit machines "i686" is typically shown on 32 bit machines (although, you might also see "i386" or "i586" on older Linuxen). On other "unix-like" systems, other hardware names will be displayed. For example, on AIX, "uname -m" gives the "machine sequence number". For whatever reason, IBM decided that "uname -M" would give the machine type and model. (ref: http://www.ibm.com/developerworks/aix/library/au-aix-systemid.html ) On Sun Solaris, "uname -m" can be used to determine the chip type and "isainfo -v" will reveal if the kernel is 64 or 32 bit. (ref: http://www.ibiblio.org/pub/packages/solaris/sparc/html/32.and.64.bit.packages.html ) A more reliable way to determine "64-bit ness" across different Unix type systems is to compile the following simple C program: cat <<eeooff > bits.c /* * program bits.c * purpose Display "32" or "64" according to machine type * written January 2013 * reference http://www.unix.org/whitepapers/64bit.html */ /* hmm, curious that angle-brackets removed by commandlinefu.com data input processing? */ #include "/usr/include/stdio.h" long lv = 0xFFFFFFFF; main ( ) { printf("%2d\n",(lv < 0)?32:64); } eeooff Compile and run thusly: cc -o bits bits.c; ./bits Show Sample Output


    -4
    uname -m # display machine "hardware name"
    mpb · 2013-01-04 11:46:43 0

What do you think?

Any thoughts on this command? Does it work on your machine? Can you do the same thing with only 14 characters?

You must be signed in to comment.

What's this?

commandlinefu.com is the place to record those command-line gems that you return to again and again. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.

Share Your Commands



Stay in the loop…

Follow the Tweets.

Every new command is wrapped in a tweet and posted to Twitter. Following the stream is a great way of staying abreast of the latest commands. For the more discerning, there are Twitter accounts for commands that get a minimum of 3 and 10 votes - that way only the great commands get tweeted.

» http://twitter.com/commandlinefu
» http://twitter.com/commandlinefu3
» http://twitter.com/commandlinefu10

Subscribe to the feeds.

Use your favourite RSS aggregator to stay in touch with the latest commands. There are feeds mirroring the 3 Twitter streams as well as for virtually every other subset (users, tags, functions,…):

Subscribe to the feed for: