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.