If you're like me and you tend to forget what day it is :-)
, a
calendar like the one that
cal (48.6)
prints doesn't help much.
Here's a little shell script below that puts angle brackets around the current
date.
For example, if today is August 7, 1996:
%cal
August 1996 S M Tu W Th F S 1 2 3 4 5 6 >7< 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
If you're sure that this script will never be called by another program that expects the system version, you can name this cal, too - just be sure to put it in a directory somewhere in your PATH before /usr/bin (8.7), the system location of most versions of cal. Otherwise, give the script another name, such as cal_today.
The script puts the output of date into its command-line parameters;
it adds an x
first for safety (in case the date command
doesn't make any output, the set command will still have arguments
and won't output a list of all shell variables).
The parameters look like this:
x Wed Aug 7 20:04:04 PDT 1996
and the fourth parameter, in $4
, is what the script uses:
set "$@" | #! /bin/sh # If user didn't give arguments, put > < around today's date: case $# in 0) set x `date` # Place > < around $4 (shell expands it inside doublequotes): /usr/bin/cal | sed -e 's/^/ /' -e "s/ $4$/>$4</" -e "s/ $4 />$4</" ;; *) /usr/bin/cal "$@" ;; esac |
---|
If you give any arguments, the script assumes that you don't want the
current month; it runs the system cal command.
Otherwise, the script pipes the system cal output into
sed (34.24).
The sed expression puts a space before every line to make room for
any> <
at the start of a line.
Then it uses two substitute commands - one for the beginning or middle,
the other for the end of a line - one is guaranteed to match the current date.
-