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.
-